如何区分UDP广播和单播?

时间:2012-05-19 18:03:54

标签: networking udp winsock broadcast

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

我怎样才能知道我收到的Paket(通过recvfrom)是广播还是单播?

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

1 个答案:

答案 0 :(得分:3)

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