我对TCP网络很陌生,并希望使用TCP进行实时数据传输。
基本上,我需要我的PC python将数据(单个字符)发送到Android应用程序。要发送的数据会实时更改,并且在更改数据时(通常间隔约0.5 - 1秒),它必须将此新数据发送到Android应用程序,并立即显示在应用程序上。
我的问题是 1)如果我使用TCP,即使在发送一个数据以预测后续传输之后,是否可以保持套接字连接打开。或者我需要在每次数据传输后关闭连接并设置另一个套接字连接。
2)在执行类似这样的事件时,TCP的延迟是多少?
非常感谢任何形式的建议!
答案 0 :(得分:0)
大多数TCP实现延迟发送小缓冲区一小段时间(约.2秒),希望在添加发送TCP段的费用之前会显示更多数据。您可以使用TCP_NODELAY选项(主要)消除该延迟。还有其他几个因素会妨碍,例如堆栈恰好在ACK序列中,但它是获得及时交付的合理方法。
延迟取决于许多因素,包括线路上的其他流量以及是否丢弃给定的段并需要重新传输。我不确定这个数字是多少。
有时实时数据比#34更好,从而使UDP数据报成为一个不错的选择。
update :TCP连接保持打开状态,直到您使用shutdown()关闭它们,客户端或服务器级别的套接字超时命中或底层堆栈最终变得无聊并关闭它。所以通常你只需要定期连接和发送数据。处理超时套接字的常用方法是在发出发送错误时重新连接。