有段关于网络的代码中的疑问
ioctlsocket(sClient,FIONBIO,(unsigned long *)&ul);//设置非阻塞 struct timeval timeout;
fd_set r;
int ret;
FD_ZERO(&r);
FD_SET(sClient,&r);
timeout.tv_sec=3;//表示3秒
timeout.tv_sec=0;//表示0微秒
ReturnVal=connect(sClient,(struct sockaddr *)&server, sizeof(SOCKADDR_IN));
for(int k =0; k<3; k++)
{
::Sleep(1);
ret = select(0,0,&r,0,&timeout);
if(ret<=0)
::Sleep(1000);
else
break;
}
if(ret==1)
{
ul =0;//阻塞模式
ioctlsocket(sClient,FIONBIO,(unsigned long *)&ul);////阻塞模式 ::setsockopt (sClient, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof (optval));
GetDlgItem(IDC_STARTNETRECV)->EnableWindow(1);
GetDlgItem(IDC_STOPNETRECV)->EnableWindow(1);
GetDlgItem(IDC_CloseNetLink)->EnableWindow(1);
GetDlgItem(IDC_SetupNetLink)->EnableWindow(0);
pStatus->SetPaneText(1, "网络已连接");
}
else
{
::closesocket(sClient);
AfxMessageBox("连接超时",MB_OK);
return;
}
为什么设置完非阻塞又设置成阻塞了