Windows 7上で2つのUDPメッセージをコンピュータに送信すると、最初のメッセージがまったく送信されないことがあるようです。他の誰かがこれを経験しましたか?Windows 7/2008 R2でソケットメッセージが送信されない
以下のテストコードは、私のマシン上の問題を示しています。テストプログラムを実行して10.10.42.22へのすべてのUDPトラフィックを監視すると、2番目の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;
}
問題が発生したときに「最初のメッセージは送信されません」という出力が得られますか? – sje397
いいえ、sendtoは常に成功を返します。 – briangreenery