2012-08-07 45 views
0

我要寻找的答案,在报价的最后一个问题如何获得Android的TCP跟踪

这是响应this thread

由于这些短消息(< MSS),我猜测栈可能正在实现Nagle的算法。服务器是否做了某种延迟的确认?如果可能的话,你应该捕获一个踪迹,看看是否有来自另一方的未决确认。 无论哪种情况,TCP_NODELAY都应该有所帮助。

(1)什么ACK代表不?我GOOGLE了它,但无法找到一个定义(2)我会给TCP_NODELAY,你和尼古拉建议一个镜头,并标记回答,如果它确实回答了这个问题。感谢你目前的帮助!

ACK是TCP确认。服务器可能会等待将它们捆绑在一起,而不是为每个段发送ACK。如果客户端实现了Nagle的算法,它会在发送包含< MSS的段之前等待ACK。在TCP跟踪中,您必须在TCP头中查找ACK编号,并将其与SEQ号码相关联,以查看是否发生了这种情况。或者你可以在这里发布一个捕获片段。

好吧,我更新的问题,以显示我的线程的run方法创建插座以及Java服务器。你会看到我有socketClient.setTcpNoDelay(true);在那里,但它没有解决它。该文档有它应该是socketClient.setTcpNoDelay(on);但之后我需要初始化。我有点困惑,我应该初始化“on”,以使socketClient.setTcpNoDelay(on);工作?

在问候了TCP跟踪,我该怎么办,从机器人(客户端)或计算机(服务器)的一面呢?和我在哪里/如何实施?它只是socketClient。 ?

附加信息:

  • 我在Eclipse
  • 01开发
  • 我的TCP客户端(安卓)被张贴在链接的问题
  • 我TCP服务器(JAVA)被张贴在链接的问题

回答

2

我不知道,如果标题涉及到你的问题问。

如果我们坚持标题:“如何让Android的TCP跟踪”,您可以使用软件,如http://www.wireshark.org/

将它安装在您的开发机器上,并确保您的开发设备或仿真器使用开发机器的互联网连接。

这就是你如何得到tcp trace最简单的方法(imho)