Reputation: 113
I have a server/client program. The code worked just a few minutes ago. After running several times, it suddenly gives error 10061. I use "netstat -a -b" to check if the server port is occupied. But I get this which seems OK:
[System]
TCP 0.0.0.0:6666 Listening
Client code:
SOCKET sendrecv;
sendrecv = InitClientSocket(serverIP, 6666);
ps. ping serverIP also works. Firewall is off too.
SOCKET InitClientSocket(char *pHost, int iPort){
struct sockaddr_in saClient;
struct hostent *pHostinfo;
SOCKET sock;
WORD version;
WSADATA WSAData;
version=MAKEWORD(1,1);
WSAStartup(version, &WSAData);
sock=socket(AF_INET,SOCK_STREAM,0);
if (sock ==SOCKET_ERROR){
closesocket(sock);
return 0;
}
pHostinfo=gethostbyname(pHost);
if (pHostinfo==NULL){
closesocket(sock);
return 0;
}
saClient.sin_family=AF_INET;
saClient.sin_addr=*((struct in_addr *)pHostinfo->h_addr);
saClient.sin_port=htons(iPort);
int nConnect=0;
nConnect=connect(sock,(struct sockaddr *)&saClient, sizeof(saClient));
if(nConnect == SOCKET_ERROR) //Here comes the error 10061
{
int err = WSAGetLastError();
closesocket(sock);
return 0;
}
return sock;
}
New Edit- Here is part of Server code :
SOCKET sock, sendrecv;
struct sockaddr_in sock_addr,sendrecv_addr;
WSADATA data;
WSAStartup( MAKEWORD(2,0), &data);
sock = WSASocket (AF_INET, SOCK_STREAM, 0, 0, 0, 0);
int nREUSEADDR = 1;
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const char*)&nREUSEADDR,sizeof(int));
sock_addr.sin_family=PF_INET;
sock_addr.sin_port=htons(6666);
sock_addr.sin_addr.s_addr=INADDR_ANY;
bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in));
listen(sock,1);
int lun = sizeof (struct sockaddr);
sendrecv = accept(sock,(struct sockaddr*)&sendrecv_addr,&lun);
linger m_sLinger;
m_sLinger.l_onoff = 1;
m_sLinger.l_linger = 0;
setsockopt(sendrecv,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger));
Upvotes: 1
Views: 475
Reputation: 310860
A Windows server will start refusing connections once its listen backlog queue fills. Your server isn't accepting fast enough, or at all.
Upvotes: 1