【发布时间】:2013-05-13 20:10:11
【问题描述】:
TCP 聊天服务器对并发服务使用轮询方法。客户端 A 不断发送大量数据。 Chatserver 尝试将数据从客户端 A 发送到客户端 B 和 C。但是,客户端 B 和 C 没有从其读取缓冲区中读取。聊天服务器、客户端 A、客户端 B 和客户端 C 的读写缓冲区会发生什么变化。 有2个案例 1. 聊天服务器有阻塞套接字。 2. 聊天服务器有非阻塞套接字。
【问题讨论】:
标签: sockets networking
TCP 聊天服务器对并发服务使用轮询方法。客户端 A 不断发送大量数据。 Chatserver 尝试将数据从客户端 A 发送到客户端 B 和 C。但是,客户端 B 和 C 没有从其读取缓冲区中读取。聊天服务器、客户端 A、客户端 B 和客户端 C 的读写缓冲区会发生什么变化。 有2个案例 1. 聊天服务器有阻塞套接字。 2. 聊天服务器有非阻塞套接字。
【问题讨论】:
标签: sockets networking
如果您在谈论 TCP,接收方的套接字接收缓冲区已填满,因此发送方的套接字发送缓冲区已填满,因此发送方要么被阻塞(处于阻塞模式),要么返回 -1,errno == EAGAIN/EWOULDBLOCK 在非阻塞模式。
如果您在谈论 UDP,则数据报将被丢弃。
【讨论】: