3

我有一个应用程序(用 C/C++ 编写),它通过 UDP 在本地网络内的许多 Windows 和 Linux 主机之间进行通信(通过 winsock / Linux-Sockets)。我只使用一个端口,因此每台主机上只有一个套接字。有些消息是广播,回复通常是单播,但有些也是广播。到目前为止一切正常,但是:

如何确定我收到的 Paket(通过 recvfrom)是广播还是单播?

我找到的唯一解决方案是在 Payload 中发送此信息或使用不同的端口。两个都不是很好...

4

1 回答 1

4

在 Linux 端,您可以使用 设置PKT_INFO ip(7)套接字选项setsockopt(2),然后用于recvmsg(2)获取 UDP 数据包的目标地址。

于 2012-05-19T18:14:40.633 回答