用winsock如何设置连接超时?
我用winsock与嵌入式设备通讯,由于即时性我希望连接的超时为10s,我如下编码:
WSADATA wsaData;
DWORD dwIPAddr;
SOCKADDR_IN sockAddr;
if(WSAStartup(MAKEWORD(2,2),&wsaData)) {
MessageBox("Could not load Windows Sockets DLL.");
return 1;
}
if((dwIPAddr=inet_addr(szIP))==INADDR_NONE) {
MessageBox("IPAddress is error!\nPlease input again!");
return 2;
}
else
{
m_hSocket=socket(PF_INET,SOCK_STREAM,0);
int timeout = 10000;
int err=setsockopt(m_hSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout));
sockAddr.sin_family=AF_INET;
sockAddr.sin_port=htons(3001);//3001:port
sockAddr.sin_addr.S_un.S_addr=dwIPAddr;
int nConnect=connect(m_hSocket,(LPSOCKADDR)&sockAddr,sizeof(sockAddr));
if(nConnect){
ReportWinsockErr("Connect is error!!");
return 3;
}
但连接总是用超时45秒。
不知以上代码有何错误,盼高手指导!!