当轮询返回POLLIN时,可以读取多少数据



如果存在客户端/服务器tcp通信情况:

客户端向服务器发送1MB消息,在服务器端,我们使用poll((和recv((函数从套接字中读取消息,序列可能如下轮询->POLLIN->recv->轮询->POLLIN-recv。。。。。。。。。。。。轮询->POLLIN-recv

我的问题是如果poll((函数告诉我套接字状态为POLLIN,当我从套接字FD读取时,从套接字读取的数据大小由recv api返回为"ssize_t"。"ssize_t"是多少,是否有一些规则或设置可以控制。因为我们不想在1MB数据中只读取1024*1024时间的1字节,因为这会降低系统性能

POLLIN仅表示某些数据可供读取。它没有提供任何可用数据的信息。但是,您可以简单地读取所需的数据,因为recv不会等到您可能想要的所有数据都可用,而是会简单地返回到目前为止可以读取的数据。

最新更新