我正在使用visual studio 2003通過UDP套接字編寫一個簡單的與本地局域網的通信程序。我試圖不使用MFC。以下是一小片的代碼我用來測試UDP套接字:奇怪發送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捕獲分組。
我的電腦的IP是192.168.1.107。奇怪的是,如果dest IP是一個像192.168.1.108這樣的本地IP,我不能在wireshark中捕獲這個數據包。但是,如果目標IP是192.168.1.1(網關)或192.168.1.255(廣播)或局域網IP以外的192.168.2.108,我可以捕獲UDP數據包。
誰能爲我解釋這個?我的代碼有問題嗎?
不能幫你,但我可以說,我有與wireshark相同的問題。發送了UDP數據包,我在局域網中的本地服務器上收到它,但無法用Wireshark記錄該數據包。 – 2012-12-23 13:15:36