UDP服务器停止接收数据

UDP Server stop receiving data

本文关键字:数据 服务器 UDP      更新时间:2023-10-16

我正在尝试制作一个在线简单的游戏,当我在Localhost上测试游戏时,服务器和客户端没有问题,但是当我尝试将PC连接到笔记本电脑时通过本地网络,此开始接收数据,但停止后几秒钟。

这是我的代码:

服务器
客户端

您的问题可能是udp是不可靠,默认情况下的插座是 blocking 。。

所以请考虑这种情况:

  1. 服务器在recvfrom中被阻止,等待客户端的数据包
  2. 客户端发送一个数据包,该数据包已删除,但永远不会到达服务器
  3. 客户端继续使用它自己的recvfrom调用。

现在,您有一个僵局,因为服务器客户端都在recvfrom中被阻止。

对于像您这样的简单游戏,您可能不需要可靠性,因此,如果这里或那里的数据包未到达,则可以。但是重要的是您不会阻止那样的僵局。

基本上有两种解决方案:第一个是使插座非阻滞,并处理recvfrom没有收到任何东西的情况。不过,请注意,因为您的线程没有任何睡觉,它们会消耗很多CPU功率。

第二个解决方案是使用例如select查看何时可以从插座上阅读。

相关文章: