При отправке двух сообщений UDP на компьютер в Windows 7 похоже, что иногда первое сообщение вообще не отправляется. Кто-нибудь еще испытывал это?
Тестовый код ниже демонстрирует проблему на моем компьютере. Когда я запускаю тестовую программу и наблюдаю весь UDP-трафик до 10.10.42.22, я вижу, что второе UDP-сообщение отправляется, но первое UDP-сообщение не отправляется. Если я немедленно снова запустил программу, то оба UDP-сообщения будут отправлены.
Не каждый раз происходит сбой, но обычно это происходит, если я подожду пару минут, прежде чем снова запустить тест.
#include <iostream>
#include <winsock2.h>
int main()
{
WSADATA wsaData;
WSAStartup( MAKEWORD(2,2), &wsaData );
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons( 52383 );
addr.sin_addr.s_addr = inet_addr( "10.10.42.22" );
SOCKET s = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
if ( sendto( s, "TEST1", 5, 0, (SOCKADDR *) &addr, sizeof( addr ) ) != 5 )
std::cout << "first message not sent" << std::endl;
if ( sendto( s, "TEST2", 5, 0, (SOCKADDR *) &addr, sizeof( addr ) ) != 5 )
std::cout << "second message not sent" << std::endl;
closesocket( s );
WSACleanup();
return 0;
}