C 非阻塞套接字在不使用数据的情况下获取错误否?
找到此例程以检查套接字状态C 非阻塞套接字在不使用数据的情况下获取错误否?,c,sockets,tcp,network-programming,C,Sockets,Tcp,Network Programming,找到此例程以检查套接字状态 ssize_t rret = recv(fd, buf, 1, MSG_PEEK) // check rret errno 我的问题是,当套接字同时有挂起的数据和错误时会发生什么?如何处理写入引起的错误。除EAGAIN/ewoodblock之外的所有套接字错误对连接都是致命的,并导致丢弃所有挂起的数据EAGAIN/ewoodblock在非阻塞模式下出现,应该会导致您使用select()/poll()/epoll()来确定下一步操作的成功时间。关于这个问题,没有什么
ssize_t rret = recv(fd, buf, 1, MSG_PEEK)
// check rret errno
我的问题是,当套接字同时有挂起的数据和错误时会发生什么?如何处理写入引起的错误。除
EAGAIN/ewoodblock
之外的所有套接字错误对连接都是致命的,并导致丢弃所有挂起的数据EAGAIN/ewoodblock
在非阻塞模式下出现,应该会导致您使用select()/poll()/epoll()
来确定下一步操作的成功时间。关于这个问题,没有什么不清楚或需要编码的地方。@user207421抱歉,不清楚,我更新了我的问题。这里没有不清楚的地方。我明白了,我回答了。但是您的代码是错误的。您必须将返回值存储在int
中。否则与-1的比较将永远不会成功。ssize_t recv(int socket、void*buffer、size_t length、int标志)@用户207421声明