0

我有一个相互通信的 TCP/IP 客户端和服务器。

我的客户端recv以 1 秒的间隔从服务器获取数据,即。sleep(1000). 我的服务器没有sleep规定。

如果我recv使用像 "hi" 这样的简单字符串,它工作正常。

但是如果我不在我的服务器中引入睡眠,我的客户端似乎处于挂起状态或在启动时立即处理大量数据。

我的服务器也应该这样做sleep吗?

或者可能是处理recved 数据的问题?

4

1 回答 1

1

如果您的服务器在没有睡眠的情况下写入套接字,那么它将非常快速地填充两侧的 TCP 缓冲区,然后您的客户端将几乎立即将大量数据卡在其本地缓冲区中以供读取。如果您希望服务器因客户端的睡眠而延迟,那么您可以将其作为事务来执行,而不是服务器写入字符串但随后读取一个字节。然后客户端将读取该字符串并写入一个字节以表示它已收到它。这将使服务器与客户端保持同步。

于 2012-04-14T01:43:53.990 回答