TCP传输持续时间

时间:2013-04-16 06:22:46

标签: sockets tcp

我有两个通过TCP套接字进行通信的应用程序。第一个接收,第二个发送。

First app:
start=clock();
recv();
end=clock();

当我运行应用程序时,(end-start)是150-200毫秒。(总是)

第二个应用:

while (!stop) {
    start=clock();
    prepare_message();
    send();
    end=clock();
}

当我运行应用程序时,(end-start)为0.00毫秒。 (总是)

消息有效负载接近200-300字节,ping持续时间<1ms。那么,为什么接收器等待200ms而发送器不等待? 那我怎么能描述200msecs?

由于

1 个答案:

答案 0 :(得分:1)

发件人在准备就绪时发送消息。接收方必须等待消息,这是额外时间可能来自的地方。如何确保在发送消息后调用recv()?如果不这样做,则recv()很可能等待输入,而发件人尚未到达此部分代码。

另一件事是,根据您使用的方法,发送方只将消息保存在缓冲区中,因为TCP可以等待更多数据将其合并到一个包中。您应该使用TCP_NODELAY选项来避免这种情况。