【问题标题】:Use of TCP for real time small packet data over a period of time使用 TCP 处理一段时间内的实时小包数据
【发布时间】:2014-12-26 23:42:14
【问题描述】:

我是 TCP 网络的新手,想使用 TCP 进行实时数据传输。

基本上,我需要我的 PC python 将数据(单个字符)发送到 Android 应用程序。要发送的数据是实时变化的,当数据发生变化时(通常大约相隔0.5-1秒),它必须将这个新数据发送到Android应用程序并立即显示在应用程序上。

我的问题是 1)如果我使用 TCP,是否可以在发送一个数据后保持套接字连接打开以预测后续传输。或者我是否需要在每次数据传输后关闭连接并设置另一个套接字连接。

2) 如果我正在执行类似的操作,TCP 的延迟是多少?

非常感谢任何形式的建议!

【问题讨论】:

    标签: android python sockets tcp real-time


    【解决方案1】:

    大多数 TCP 实现会在短时间内(约 0.2 秒)延迟发送小缓冲区,希望在增加发送 TCP 段的费用之前能提供更多数据。您可以使用 TCP_NODELAY 选项(大部分)消除该延迟。还有其他几个因素会阻碍,例如堆栈恰好在 ACK 序列中的位置,但它是获得及时交付的相当好的方法。

    延迟取决于许多因素,包括线路上的其他流量以及给定段是否被丢弃并需要重新传输。我不确定一个可靠的数字是多少。

    有时实时数据“总比迟到好”,这使得 UDP 数据报成为一个不错的选择。

    更新:TCP 连接保持打开状态,直到您使用 shutdown() 关闭它们,客户端或服务器级别的套接字超时命中或底层堆栈最终感到无聊并关闭它。所以通常你只是随着时间的推移定期连接和发送数据。处理超时套接字的常用方法是在遇到发送错误时重新连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      相关资源
      最近更新 更多