2014-08-30 48 views
1

我正在制作一个应用程序,哪两个设备应该通过TCP套接字进行通信。一个设备是我的三星手机,另一个是仿真器。我将模拟器设置为客户端,将手机设置为服务器。客户端连接到电话并工作正常(发送和接收),但几分钟后它停止接收,但发送没有问题。网络部分有数百行代码,其中有许多函数使得阅读变得复杂,所以我决定不在这里写,但我怀疑问题来自模拟器本身。这意味着如果我使用真实设备而不是仿真器,这不会发生。网络代码的很多部分与服务器和客户端类似,并且服务器正常运行。只有模拟器中的客户端套接字停止接收。它可以发送(所以连接是活着的),我检查线程。他们也活着。你是否同意这可能是模拟器的问题?套接字发送但在仿真器中没有收到

回答

0

我觉得这是你的应用程序,而不是在模拟器中的一个问题,这是因为:

  • Android模拟器是非常低的水平,这是它模拟一个硬件,然后运行在顶部的正常软件它。因此它不知道像TCP这样的高级协议,它只模拟网卡。
  • TCP是一种协议,所有消息都由对等方确认。如果仿真器在接收消息时遇到问题,它可能也不会收到您发送的数据包的确认。但是这会使你的应用程序内部进一步发送失败,这与你发送作品的声明相反。
  • 如果在模拟器内部会出现这样的问题,其他人也会注意到。
+0

谢谢但是您确定“未收到确认会导致进一步发送失败,以便服务器不会收到新消息”吗?所有的消息都传递给服务器,我在服务器端检查这一点,而不是在客户端。但你确定这个说法吗? – user2808671 2014-08-30 11:14:31

+0

是的,这是TCP的工作原理。如果确认没有回到android内核,它会将连接标记为断开,并且进一步写入将失败。 – 2014-08-30 11:32:54

+0

也许确认收到,但没有其他数据包!我一遍又一遍地查看了整个代码,但没有发现任何导致服务器接收到但客户端(模拟器)没有收到的信息 – user2808671 2014-08-30 11:36:11

相关问题