首先,我们知道,socket() 调用创建指定系列和指定类型的套接字。
s = socket(family, type, protocol);
socket将返回套接字句柄。套接字句柄即为文件描述符s。
因此,我们使用了socket获取了一个返回的套接字句柄s,然后我们使用fcntl函数来对其进行非阻塞的设置。
iFlags=fcntl(iSockfd,F_GETFL,0);
/*设置为非阻塞*/
fcntl(iSockfd,F_SETFL,iFlags|O_NONBLOCK);
第一句代码,用fcntl获取socket的Flags;(F_GETFL)
第二句代码,用fcntl设置socket的Flags,使其变为非阻塞,其中Flags应该为"iFlags|O_NONBLOCK";(F_SETFL)
若你想设置回阻塞,只需要把Flags改为iFlags&~O_NONBLOCK即可。