用于LAN计算机发现的UDP广播&服务器设置

时间:2011-06-18 00:40:44

标签: c++ c udp broadcast

我正在开发一个小型的网络游戏原型,它将使用UDP在局域网上播放。为了发现网络上的其他计算机,我一直在调查广播。但是,我仍然不确定有关UDP套接字设置/使用的一些细节(网络新手)。我在游戏开始后找到了一个很好的库,但首先,必须发现所有运行游戏的计算机,并且必须选择一个作为服务器。所以我的问题如下:

  • 是否可以使用单个UDP套接字来监听和发送广播?我很确定答案是肯定的,但我想验证它。
  • 使用UDP时,您实际上是否必须使用bind()?据我了解,connect()不是必需的,也不是send()/recv(),因为它们适用于TCP(sendto()/recvfrom()是替代品。)

1 个答案:

答案 0 :(得分:4)

  1. 是的,您可以从单个套接字发送广播,发送单播和接收数据包(广播或单播)。这对于“回复发件人”工作非常有用。

  2. 并非每个套接字都需要使用bind。如果不这样做,将自动为您选择一个端口。但有人必须绑定预共享端口号才能正确传送第一个数据包(可能是广播)。第一个数据包包含源端口和IP地址;回复包只能使用它。

  3. 然后将两端绑定到固定端口号会使防火墙配置更简单。

  4. setsockopt(SO_BROADCAST),否则您在尝试发送广播包时会出错。