设置socket为非阻塞模式
int oldfd = fcntl(sockfd,F_GETFL,0);
int newfd = oldfd|O_NONBLOCK;
ret = fcntl(sockfd,F_SETFL,newfd);
这里要注意是F_GETFL 而不是F_GETFD
如果写错了,fcntl的返回值并不会报错,但是socket并不会被设置为非阻塞模式。这种错误很难发现。
int oldfd = fcntl(sockfd,F_GETFL,0);
int newfd = oldfd|O_NONBLOCK;
ret = fcntl(sockfd,F_SETFL,newfd);
这里要注意是F_GETFL 而不是F_GETFD
如果写错了,fcntl的返回值并不会报错,但是socket并不会被设置为非阻塞模式。这种错误很难发现。