tcp消息通信

时间:2010-11-22 10:29:51

标签: c process tcp send recv

您好我想使用tcp连接发送/ recv消息。问题是我想发送许多消息并测量延迟。因此,我不想在发送每条消息后收到。但是,如果我没有及时处理传入的消息,程序总是得到意想不到的结果。有没有什么方法可以处理recv()而不会阻止我发送msg的程序? 任何意见将不胜感激。

3 个答案:

答案 0 :(得分:2)

使用TCP测量延迟可能不是最佳选择,因为TCP必须引入自身的延迟(请参阅Nagle's algorithm)。 TCP意味着一个字节流,它甚至没有明确定义的“消息”概念。

您可以将套接字设置为non-blocking,如果没有数据,将导致recv()立即返回。如果您不想通过轮询浪费CPU,则可以使用select()来检测套接字何时可以读取数据。

答案 1 :(得分:0)

您可以使用select()来测试传入数据是否可用。

答案 2 :(得分:0)

我在这里没有提到的一个选项是使用spearate线程进行接收。这样你就可以让你的简单哑巴阻塞等待而不会干扰(很多)你的发送逻辑在另一个线程中。