我有一个应用程序(用 C/C++ 编写),它通过 UDP 在本地网络内的许多 Windows 和 Linux 主机之间进行通信(通过 winsock / Linux-Sockets)。我只使用一个端口,因此每台主机上只有一个套接字。有些消息是广播,回复通常是单播,但有些也是广播。到目前为止一切正常,但是:
如何确定我收到的 Paket(通过 recvfrom)是广播还是单播?
我找到的唯一解决方案是在 Payload 中发送此信息或使用不同的端口。两个都不是很好...
我有一个应用程序(用 C/C++ 编写),它通过 UDP 在本地网络内的许多 Windows 和 Linux 主机之间进行通信(通过 winsock / Linux-Sockets)。我只使用一个端口,因此每台主机上只有一个套接字。有些消息是广播,回复通常是单播,但有些也是广播。到目前为止一切正常,但是:
如何确定我收到的 Paket(通过 recvfrom)是广播还是单播?
我找到的唯一解决方案是在 Payload 中发送此信息或使用不同的端口。两个都不是很好...
在 Linux 端,您可以使用 设置PKT_INFO
ip(7)
套接字选项setsockopt(2)
,然后用于recvmsg(2)
获取 UDP 数据包的目标地址。