为什么我的客户端/服务器应用程序出现“连接超时”错误?

时间:2017-07-30 19:33:58

标签: java android sockets network-programming

Iv制作了一个在线纸牌游戏,服务器只是使用 TCP 传输消息,因此客户端可以播放和同步,测试时本地一切正常。当涉及到现实世界的玩家被卡住并且他们的设备抛出“连接超时”!!!!!

我做了一些研究,为什么会发生这种情况,并且可能是网络本身的问题,而不是编程错误。我在慢/坏互联网上重新创建了这些错误。

Actuall问题不是为什么而是经常?

正常是否经常“连接超时”错误? 经常意味着:3/4游戏会遇到一个或多个游戏,并会在read()方法中抛出异常?

  • 我的服务器ping在谷歌地址上稳定到34毫秒50字节数据包没有丢失

  • 服务器详细信息:200Mbps连接,i7第6代,32Gb ram等。它唯一能做的就是为每个客户端,存储房间和传输消息创建新线程(消息是字符串,聊天时最多100个字符)每个其他游戏消息大约4-10个字符....)在我看来,没有很多服务器工作:/。

我认为可靠的解决方案是让游戏在服务器上发生,当有人失去连接时,他可以重新连接新游戏并找到游戏,但我认为这需要很多服务器工作大量丢失的消息处理为了让玩家回到他所处的状态。所以我正在寻求修复或其他方法!!!

错误:

Exception java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection 
timed out)
libcore.io.IoBridge.maybeThrowAfterRecvfrom (IoBridge.java:633)
libcore.io.IoBridge.recvfrom (IoBridge.java:594)
java.net.PlainSocketImpl.read (PlainSocketImpl.java:488)
java.net.PlainSocketImpl.access$000 (PlainSocketImpl.java:37)
java.net.PlainSocketImpl$PlainSocketInputStream.read 
(PlainSocketImpl.java:237)
java.io.InputStreamReader.read (InputStreamReader.java:231)
java.io.BufferedReader.fillBuf (BufferedReader.java:145)
java.io.BufferedReader.readLine (BufferedReader.java:397)

0 个答案:

没有答案