情况描述
Android真机、Wifi网络
游戏启动后不进行其它操作,Socket层提供了和服务器心跳交互,每隔30秒进行一次。
放置手机一段时间(时间不等,从几分钟到几十分钟),客户端报错:System.Net.Sockets.SocketException (0x80004005): Network subsystem is down。
通过堆栈可以看到异常发生在Socket异步接收消息的回调函数中。
原因
未能定位到具体原因,猜测有可能是Wifi网络导致的,比如Wifi休眠,或者硬件层检测到数据量低断了机器的网络连接。
可以参考UWA上的一个相同问题的帖子
解决方案
笔者又在安卓4G网络和客户端PC网络中进行测试未复现该问题,且上述链接也提到并不是所有安卓手机都有该问题。因此对该问题按照断线重连的方案进行处理。
在Android设备上,一款游戏在Wi-Fi环境下启动后,即使不进行操作,每30秒也会通过Socket与服务器保持心跳交互。然而,当手机放置一段时间后,可能会出现'System.Net.Sockets.SocketException: Network subsystem is down'的错误。这可能是由于Wi-Fi休眠或数据量低导致的网络连接断开。问题在4G网络和PC网络下未重现,推测可能是个别安卓设备的问题。解决方案是实现断线重连机制以确保网络稳定性。
1937

被折叠的 条评论
为什么被折叠?



