所以,我正在用 C 语言创建一个使用 UDP 的服务器,并且我想监听来自许多来源的传入数据包。因此,当我调用 时ssize_t recvfrom(int, void *, size_t, int, struct sockaddr * __restrict, socklen_t * __restrict)
,包含发送者信息的第 5 个参数可能会有所不同。
有没有办法在不知道每个客户地址信息的情况下接收数据包?而且,这对 C 的库有可能吗?
这是我的代码:
int file_descriptor;
char data[1024];
int bytes_recved;
sockaddr_in iDontKnow;
socklen_t addr_len = sizeof(iDontKnow);
if ((bytes_recved = recvfrom(file_descriptor, data, strlen(data), 0, (struct sockaddr*)&iDontKnow, &addr_len)) < 0) {
perror("Failed to receive data");
}
我注意到当使用 Java 的 DatagramSocket 和 DatagramPacket 类接收数据时,DatagramSocket 的receive
函数接受了一个 DatagramPacket 类型的参数。然而,这个 DatagramPacket 只保存放置数据的对象。那么,为什么 C 实现 UDP 接收需要知道发送者的信息呢?