dullboy
February 20th, 2006, 02:31 PM
I am trying to create a socket and then connect to a IP address. But I got an error "WSAECONNREFUSED" after I called funtion WSAGetLastError(). Here is part of the code.
main()
{
int sock;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,2);
WSAStartup(wVersionRequested,&wsaData);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sock == -1)
{
printf("Invalid socket\n");
exit(1);
}
struct sockaddr_in sa;
memset(&sa,0,sizeof(sa));
sa.sin_addr.s_addr = inet_addr(argv[1]);
sa.sin_family = AF_INET;
sa.sin_port = 7;
connect(sock,(struct sockaddr*)&sa,sizeof(sa));
int err = WSAGetLastError();
switch(err){
case WSANOTINITIALISED:
printf("WSANOTINITIALISED\n");
break;
case WSAENETDOWN:
printf("WSAENETDOWN\n");
break;
case WSAEADDRINUSE:
printf("WSAEADDRINUSE\n");
break;
case WSAEINTR:
printf("WSAEINTR\n");
break;
case WSAEINPROGRESS:
printf("WSAEINPROGRESS\n");
break;
case WSAEALREADY:
printf("WSAEALREADY\n");
break;
case WSAEADDRNOTAVAIL:
printf("WSAEADDRNOTAVAIL\n");
break;
case WSAEAFNOSUPPORT:
printf("WSAEAFNOSUPPORT\n");
break;
case WSAECONNREFUSED:
printf("WSAECONNREFUSED\n");
break;
case WSAEFAULT:
printf("WSAEFAULT\n");
break;
case WSAEINVAL:
printf("WSAEINVAL\n");
break;
case WSAEISCONN:
printf("WSAEISCONN\n");
break;
case WSAENETUNREACH:
printf("WSAENETUNREACH\n");
break;
case WSAENOBUFS:
printf("WSAENOBUFS\n");
break;
case WSAENOTSOCK:
printf("WSAENOTSOCK\n");
break;
case WSAETIMEDOUT:
printf("WSAETIMEDOUT\n");
break;
case WSAEWOULDBLOCK:
printf("WSAEWOULDBLOCK\n");
break;
case WSAEACCES:
printf("WSAEACCES\n");
break;
default:
break;
}
if(err!=0)
{
printf("Connection failed\n");
exit(1);
}
...
}
Can any networking GURU here points out what could be the reason? Thanks for your inputs.
main()
{
int sock;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,2);
WSAStartup(wVersionRequested,&wsaData);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sock == -1)
{
printf("Invalid socket\n");
exit(1);
}
struct sockaddr_in sa;
memset(&sa,0,sizeof(sa));
sa.sin_addr.s_addr = inet_addr(argv[1]);
sa.sin_family = AF_INET;
sa.sin_port = 7;
connect(sock,(struct sockaddr*)&sa,sizeof(sa));
int err = WSAGetLastError();
switch(err){
case WSANOTINITIALISED:
printf("WSANOTINITIALISED\n");
break;
case WSAENETDOWN:
printf("WSAENETDOWN\n");
break;
case WSAEADDRINUSE:
printf("WSAEADDRINUSE\n");
break;
case WSAEINTR:
printf("WSAEINTR\n");
break;
case WSAEINPROGRESS:
printf("WSAEINPROGRESS\n");
break;
case WSAEALREADY:
printf("WSAEALREADY\n");
break;
case WSAEADDRNOTAVAIL:
printf("WSAEADDRNOTAVAIL\n");
break;
case WSAEAFNOSUPPORT:
printf("WSAEAFNOSUPPORT\n");
break;
case WSAECONNREFUSED:
printf("WSAECONNREFUSED\n");
break;
case WSAEFAULT:
printf("WSAEFAULT\n");
break;
case WSAEINVAL:
printf("WSAEINVAL\n");
break;
case WSAEISCONN:
printf("WSAEISCONN\n");
break;
case WSAENETUNREACH:
printf("WSAENETUNREACH\n");
break;
case WSAENOBUFS:
printf("WSAENOBUFS\n");
break;
case WSAENOTSOCK:
printf("WSAENOTSOCK\n");
break;
case WSAETIMEDOUT:
printf("WSAETIMEDOUT\n");
break;
case WSAEWOULDBLOCK:
printf("WSAEWOULDBLOCK\n");
break;
case WSAEACCES:
printf("WSAEACCES\n");
break;
default:
break;
}
if(err!=0)
{
printf("Connection failed\n");
exit(1);
}
...
}
Can any networking GURU here points out what could be the reason? Thanks for your inputs.