Visual Studio 2003 を使用して、UDP ソケット経由でローカル LAN と通信する簡単なプログラムを作成しています。そして、MFCを使用しないようにしています。以下は、UDP ソケットをテストするために使用した小さなコードです。
static void sendMsg(char *buf, int len)
{
SOCKET sock;
struct sockaddr_in addr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0)
return;
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr("192.168.2.108"); // Specify dest IP
sendto(sock, buf, len, 0, (struct sockaddr*)&addr, sizeof(addr));
closesocket(sock);
}
パケットが送信されたかどうかを確認するために、wireshark を使用してパケットをキャプチャします。
私の PC の IP は 192.168.1.107 です。奇妙なことに、dest IP が 192.168.1.108 のようなローカル IP の場合、wireshark でパケットをキャプチャできません。しかし、送信先 IP が 192.168.1.1 (ゲートウェイ) または 192.168.1.255 (ブロードキャスト) であるか、192.168.2.108 のような LAN IP の外部にある場合、UDP パケットをキャプチャできます。
誰が私にこれを説明できますか? 私のコードに問題はありますか?