пакетик для всех

Тема в разделе "WASM.NETWORKS", создана пользователем devil fox, 22 ноя 2006.

  1. devil fox

    devil fox New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2006
    Сообщения:
    5
    Доброго времени суток товарищи.
    Помогите мне плз... Тупаря врубил, остановиться не могу. Необходимо отправить широковещательный пакетик...
    Есть такой кусок кода... И как многие уже догадались - не рабочий. ыы)))

    push 0
    push SOCK_DGRAM
    push AF_INET
    call socket@12
    .if eax!=INVALID_SOCKET
    mov udpsock,eax
    .else
    . . .
    .endif
    push FD_READ
    push WM_UDPSOCKET
    push hwnd
    push udpsock
    call WSAAsyncSelect@16
    .if eax==SOCKET_ERROR
    . . .
    .endif
    push 1
    push TRUE
    push SO_BROADCAST
    push SOL_SOCKET
    push udpsock
    call setsockopt@20
    .if eax==SOCKET_ERROR
    . . .
    .endif
    push Port
    call htons@4
    mov udpsin.sin_port,ax
    mov udpsin.sin_family, AF_INET
    push INADDR_BROADCAST
    call htonl@4
    mov udpsin.sin_addr, eax
    push sizeof udpsin
    push offset udpsin
    push udpsock
    call bind@12
    .if eax==SOCKET_ERROR
    . . .
    .endif
    push sizeof INADDR_BROADCAST
    push offset udpsin
    push 0
    push sizeof AppName
    push offset AppName
    push udpsock
    call sendto@24
    .if eax==SOCKET_ERROR
    . . .
    .endif

    Заранее всем благодарен.
     
  2. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    По всей видимости не проходит bind

    1) bind надо делать не к INADDR_BROADCAST а к локальному адресу или ADDR_ANY
    2) в sendto должна фигурировать отдельная структура sockaddr_in с sin_addr=INADDR_BROADCAST

    вроде так...

    А, и исчо ;)

    push sizeof INADDR_BROADCAST <---- sizeof sockaddr_in
    ....................................
    call sendto@24
     
  3. devil fox

    devil fox New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2006
    Сообщения:
    5
    Может bind тоже не прокатывает, вполне может быть, но дело до него не доходит - setsockopt все загинает.
     
  4. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    А, ну да ;)

    push 1
    push TRUE <---- тут должен быть адрес переменной с установленым значением TRUE
    push SO_BROADCAST
    push SOL_SOCKET
    push udpsock
    call setsockopt@20


    // В MSDN есть море примеров, в http://www.google.com/ тоже...