如何区分UDP广播和单播? [英] How to differentiate between UDP Broadcasts and Unicasts?

查看:144
本文介绍了如何区分UDP广播和单播?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have an Application (written in C/C++) thats communicating over UDP between many Windows and Linux Hosts inside the local Network (via winsock / Linux-Sockets). I only use one Port and so only one Socket on each host. Some messages are Broadcastet, replies are often Unicast but some are Broadcasts too. Everthing is working so far but:

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

How can i find out whether a Paket i received (via recvfrom) was a Broadcast or Unicast?

我发现的唯一解决方案是在有效负载内发送此信息或使用其他端口。两者都不是很好...

The only solution i found was to send this info inside the Payload or to use different ports. Both are not very nice...

推荐答案

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

On Linux side you can set PKT_INFO ip(7) socket option with setsockopt(2), and then use recvmsg(2) to get the destination address of the UDP packet.

这篇关于如何区分UDP广播和单播?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆