TCP作为连接协议问题

时间:2014-01-15 21:24:36

标签: networking tcp

我不确定这是否是正确的提问地点,如果不是,请原谅我。

我正在编写需要连接到服务器的计算机监控软件。服务器可以发出相对紧急的消息,例如声音或取消警报,并且客户端可以发送关于计算机的数据,例如屏幕截图。客户端发送的数据在时间上并不是太关键,但迟到的时间不应超过两分钟。

软件必须不需要设置端口转发,并假设互联网连接将通过几乎所有时间都具有NAT的无线路由器完成。

我的想法是从客户端启动TCP连接,并使用它来传输数据。理想情况下,我不会在不需要时发送数据,但我认为这是不可能的。会不时发送相当于ping的连接保持连接活动,如果这个程序一直在计算机上运行,​​它将使用什么样的带宽?另外,是否可以减少这些保持活动的标题大小?

在开始设计通信和编程之前,这个连接计划有缺陷吗?还有更好的选择吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

1)您不需要发送'ping'数据来保持连接活动,TCP堆栈会自动执行此操作;发送“ping”数据的一个原因是检测客户端关闭的连接 - 通常只有在尝试从套接字读取/写入时才发现出现问题。可能有一种方法可以更改各种超时,以便您可以更快地检测到这种情况。

2)通常,虽然TCP提供了面向流的无错误通道,但它不能保证及时性,如果您在互联网上使用它,则更加难以预测。

3)对于这样的应用程序(我希望你是出于道德目的) - 我倾向于使用TCP,因为你不希望客户端收到数据包发出警报的情况但是错过了一个再次关闭它。