Сокеты

Тема в разделе "WASM.BEGINNERS", создана пользователем Ragnar, 31 май 2009.

  1. Ragnar

    Ragnar New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2009
    Сообщения:
    13
    Код (Text):
    1. format PE GUI 4.0
    2. include '%fasminc%/win32a.inc'
    3. entry Main
    4. section '.data' code readable writeable  executable
    5.   wsadata WSADATA
    6.   sa_in   sockaddr_in
    7.   buff db 1000h dup(0)
    8.   sock  dd ?
    9.     proc Main
    10.     invoke WSAStartup, 202h, wsadata
    11.     invoke socket, AF_INET, SOCK_RAW, 0
    12.     mov [sock], eax
    13.  
    14.     invoke gethostname, buff, 255
    15.     invoke gethostbyname, buff
    16.     lea ebx, [sa_in.sin_addr]
    17.     mov eax, dword  [eax+0Ch]
    18.     mov eax, dword  [eax]
    19.     mov ecx, dword  [eax] ; ïîëó÷àåì óêàçàòåëü íà ñòðîêó IP â ñåòåâîì ïîðÿäêå áàéò
    20.     mov dword [ebx], ecx
    21.     invoke bind, [sock], sa_in, sizeof.sockaddr_in
    22.     invoke WSAGetLastError
    получаю ошибку WSAEAFNOSUPPORT 10047
    Address family not supported by protocol family.
    Что я делаю не правильно?
     
  2. Ragnar

    Ragnar New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2009
    Сообщения:
    13
    Решено, необходимо инициализировать до конца структуру
    mov dword [sa_in.sin_family],AF_INET
    mov dword [sa_in.sin_port], 50