麻烦高手帮忙看下.该如何解决

麻烦高手帮忙看下...
这是我一个线程函数里的代码:


__try{
SOCKADDR_IN target;
target.sin_family = AF_INET;
target.sin_port = htons (PORT);
target.sin_addr.s_addr = htonl(i);
mysocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(mysocket == INVALID_SOCKET){
__leave;
}//设置socket为非阻塞模式,ul=1.
iErr = ioctlsocket(mysocket,FIONBIO,(unsigned long*)&ul);
if(iErr == SOCKET_ERROR)
__leave;
connect(mysocket,(struct sockaddr *)&target,sizeof(target));
FD_ZERO(&w);
FD_SET(mysocket,&w);
iErr=select(0, 0, &w, 0, &timeout);
if(iErr == SOCKET_ERROR || iErr == 0)//如果不可写,则退出
__leave;
else{//可写则发送数据
iErr = send(mysocket,SendBuff,SendBuffLen,0);
if(iErr == SOCKET_ERROR)
__leave;
}
FD_ZERO(&r);
FD_SET(mysocket,&r);
iErr=select(0, &r, 0, 0, &timeout);
if(iErr == SOCKET_ERROR || iErr == 0){//如果不可读则退出
__leave;
}
else{//可读则接受数据
printf("123");
iErr = recv(mysocket,RecvBuff,RecvBuffLength,0);
if(iErr == SOCKET_ERROR)
__leave;
}
ptr=strstr(RecvBuff,szSign); 
if(ptr!=NULL)
printf("response:%s\n",RecvBuff);
}
__finally{
ReleaseSemaphore(hSemaphore,1,&PreviousCount);
closesocket(mysocket);
}

  第2次select的时候老是出错,也就是printf("123");老是打不出来,跟的时候明明到了这句话这。
  程序的意思就是扫描一个网段的80端口,并发送数据,接受回显,老是出错,别人的源码放我这跑就好好的,基本都是一样 的,为什么我的老错呢?高手帮忙看下。谢谢。


------解决方案--------------------
与运行时的系统环境和网络环境也有关系。