如果存在客户端/服务器tcp通信情况:
客户端发送1MB消息到服务器,在服务器端我们使用poll()和recv()函数从socket读取消息,顺序可能是这样 轮询-> POLLIN -> 接收-> 轮询-> POLLIN - 接收............ 轮询-> POLLIN - 接收
我的问题是 如果poll()函数告诉我套接字状态是POLLIN,当我从套接字FD读取时,从套接字读取的数据大小由recv api返回为“ssize_t”。 “ssize_t”是多少,是否有一些我们可以控制的规则或设置。因为我们不想用 1024*1024 时间只读取 1MB 数据的 1 个字节,因为这会降低系统性能
最佳答案
POLLIN 仅表示某些数据可供读取。它不提供任何信息有多少数据可用。但是您可以简单地读取所需的数据,因为 recv
不会等到您可能需要的所有数据都可用,而是简单地返回到目前为止可以读取的数据。
关于sockets - poll返回POLLIN时可以读取多少数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60595029/