Какой сокет нужен?

Тема в разделе "WASM.NETWORKS", создана пользователем fourty_fourty, 9 июн 2008.

  1. fourty_fourty

    fourty_fourty Андрей

    Публикаций:
    0
    Регистрация:
    23 фев 2008
    Сообщения:
    23
    Адрес:
    Нязепетровск
    Для подключения к серверу требуется TCP-соединение через 13 порт, но при вызове connect через этот порт вылазит ошибка WSAEWOULDBLOCK!

    Код (Text):
    1.         invoke  socket, AF_INET,SOCK_STREAM, IPPROTO_TCP
    2.         mov hSocket, eax
    3.         invoke  htons, 13
    4.         mov     sin.sin_port, ax
    5.         mov     sin.sin_family, AF_INET
    6.         mov sin.sin_addr, INADDR_ANY
    7.         invoke  bind, hSocket, offset sin, sizeof sin
    8.         invoke  WSAAsyncSelect, hSocket, hWnd, WM_SOCKET, FD_READ+FD_WRITE
    9.  
    10. ...
    11.         invoke  GetDlgItemText, hWnd, IDE_ADDR, offset buf, sizeof buf
    12.         mov al, byte ptr [buf]
    13.         cmp al, 39h
    14.         jg  host_name
    15.         cmp al, 30h
    16.         jge ip_addr                    
    17.         invoke  SetDlgItemText, hWnd, IDS_STATUS, offset addr_null
    18.         jmp return
    19.     host_name:
    20.         invoke  gethostbyname, offset buf
    21.         mov eax, dword ptr [eax+12]
    22.         mov eax, [eax]
    23.         mov eax, [eax]
    24.         jmp _connect
    25.     ip_addr:
    26.         invoke  inet_addr, offset buf
    27.     _connect:
    28.         invoke  SetDlgItemText, hWnd, IDS_STATUS, 0
    29.         mov sin.sin_addr, eax
    30.         invoke  connect, hSocket, offset sin, sizeof sin
    Вопрос: что, собственно, не так? о_0
     
  2. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Может блокируемый сокет "говорит", что он будет заблочен и стоит с ним поговорить позже?
    Иль, может быть, стоит сначала книг покурить?
    Или, в гугл вас прогнать?
    Что, собственно, не так? о_0
     
  3. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    читайте хелп
    вызов WSAAsyncSelect переводит сокет в неблокирующий режим. В этом режиме "ошибка" WSAEWOULDBLOCK - нормальный ход событий, говорит лишь о том, что операция не могла быть выполнена синхронно и уведомление об окончании вы получите позже ( в вашем случае, через оконное сообщение )
     
  4. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    "вызов WSAAsyncSelect переводит сокет в неблокирующий режим"
    Точно, а то я хрень немного написал :)