我有一个我接受的非阻塞连接套接字:
我有一个非阻塞套接字连接,在收到数据包后,我尝试使用 recv 读取更多数据。
struct sockaddr accepted_address;
socklen_t accepted_address_size = sizeof(accepted_address);
int fd = accept(server_fd, &accepted_address, &accepted_address_size);
make_nonblocking(fd);
... // wait when socket is ready to give me data
char buffer[BUF_SIZE];
int used = 0;
while (true) {
int bytes_received = recv(fd, buffer, BUF_SIZE, 0);
if (bytes_received > 0) { /* OK */ }
else if (bytes_received < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
/* Should wait for more data, BUT I WILL WAIT INDEFINITELY!!! …Run Code Online (Sandbox Code Playgroud)