套接字选项
选项影响套接字操作,如 封包路由,OOB数据传输,获取和设置套接字选项分别是 getsockopt setsockopt 用法如下:
int getsockopt(SOCKET s,int level,int optname,char* optval,int* optlen);
int setsockopt(SOCKET s,int level,int optname,char* optval,int* optlen);
每个协议层套接字的选项有不同的级别:
应用层:SOL_SOCKET
传输层:IPPROTO_TCP IPPROTO_UDP
网络层:IPPROTO_IP
阻塞模式下,可以调用recvfrom在指定的端口接收网络封包
如果封包还不到,设置套接字选项即可设置等待时间
BOOL SetTimeout(SOCKET s,int nTime,BOOL bRecv) { int ret = ::setsockopt(s,SOL_SOCKET, brecv?SO_RCVTIMEO:SO_SNDTIMEO,(char*)&nTime,sizeof(nTime)); }