Доброго времени суток товарищи. Помогите мне плз... Тупаря врубил, остановиться не могу. Необходимо отправить широковещательный пакетик... Есть такой кусок кода... И как многие уже догадались - не рабочий. ыы))) 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 Заранее всем благодарен.
По всей видимости не проходит 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
Может bind тоже не прокатывает, вполне может быть, но дело до него не доходит - setsockopt все загинает.
А, ну да push 1 push TRUE <---- тут должен быть адрес переменной с установленым значением TRUE push SO_BROADCAST push SOL_SOCKET push udpsock call setsockopt@20 // В MSDN есть море примеров, в http://www.google.com/ тоже...