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

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

  • 可以使用单个UDP套接字来监听和发送广播吗? 我很确定答案是肯定的,但我想validation它。
  • 使用UDP时,你真的必须使用bind()吗? 据我所知, connect()不是必需的,也不是send()/recv() ,因为它们是用于TCP( sendto()/recvfrom()作为替换)。

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

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

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

  4. setsockopt(SO_BROADCAST) ,否则你会在尝试发送广播包时遇到错误。