sockets - poll返回POLLIN时可以读取多少数据

标签 sockets pool recv

如果存在客户端/服务器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/

相关文章:

python - 如何检查是否所有数据都通过 Python 中的 TCP 套接字接收到

c++ - HTTP 服务器,接受连接后我从 recv() 返回 -1

java - 使用 readDouble 从套接字输入读取 Double + EOL

c - 如何让 Linux 接受发往非本地地址的数据包?

r - 是否有任何选项可以定义 dbGetQuery 的特定时间限制

Python 工作进程池和只运行多个进程有什么区别?

java - 关于简单客户端服务器套接字应用程序的一些问题

关闭 telnet session 会将 stdout 重定向到 http 套接字

iis - 使用 Microsoft.Web.Administration 获取远程应用程序池状态

sockets - 在一个套接字上同时进行 recv() 和 send() 是否安全?