http://www.cnblogs.com/gaoteng/p/3767967.htmlhtml
用winsocket時,send(),recv()過程當中有時因爲網絡情況等緣由,收發不能預期進行,能夠設置收發時限:
int nNetTimeout = 1000; //1秒
//發送時限
setsockopt( socket, SOL_SOCKET, SO_SNDTIMEO, ( char * )&nNetTimeout, sizeof( int ) );
//接收時限
setsockopt( socket, SOL_SOCKET, SO_RCVTIMEO, ( char * )&nNetTimeout, sizeof( int ) );網絡
fd_set rfd; //描述符集 這個將測試鏈接是否可用 struct timeval timeout; //時間結構體 FD_ZERO($rfd);//先清空一個描述符集 timeout.tv_sec = 60;//秒 timeout.tv_usec = 0;//一百萬分之一秒,微秒 u_long ul=1;//表明非阻塞 ioctlsocket(socket,FIONBIO,$ul);//設置爲非阻塞鏈接
SOCKADDR_IN addrSelf;//本地地址 addrSelf.sin_addr.s_addr = inet_addr("192.168.1.110");//指定網卡的地址 addrSelf.sin_family = AF_INET; addrSelf.sin_port = htons(20000);//本地端口 if( -1 == bind(sockClient[i],(SOCKADDR*)&addrSelf,sizeof(SOCKADDR)))//把網卡地址強行綁定到Soket { 綁定成功 }