一般情况下,都为阻塞
阻塞情况下,客户端发送的消息服务端无法接受。改用recv替换read。
这样改也是不行的,因为套接字接收与发送都是默认为阻塞模式,所以多方通信需要套接字描述符为非阻塞方式。需要改变套接字的文件属性。
// 设置非阻塞方式
flags = fcntl(new_fd, F_GETFL, 0);
fcntl(new_fd, F_SETFL, flags | O_NONBLOCK);
一般情况下,都为阻塞
阻塞情况下,客户端发送的消息服务端无法接受。改用recv替换read。
这样改也是不行的,因为套接字接收与发送都是默认为阻塞模式,所以多方通信需要套接字描述符为非阻塞方式。需要改变套接字的文件属性。
// 设置非阻塞方式
flags = fcntl(new_fd, F_GETFL, 0);
fcntl(new_fd, F_SETFL, flags | O_NONBLOCK);