【发布时间】:2012-12-23 12:51:18
【问题描述】:
我正在使用 Visual Studio 2003 编写一个通过 UDP 套接字与本地 LAN 通信的简单程序。而且我试图不使用 MFC。下面是我用来测试UDP socket的一小段代码:
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(广播)或 LAN ip 之外的 IP,如 192.168.2.108,我可以捕获 UDP 数据包。
谁能帮我解释一下?我的代码有问题吗?
【问题讨论】:
-
帮不了你,但我可以说我在使用wireshark时遇到了同样的问题。 UDP 数据包已发送,我在 LAN 的本地服务器上收到它,但无法使用 Wireshark 记录该数据包。
标签: c++ c udp visual-studio-2003 visual-c++