-
November 1st, 2011, 11:03 AM
#1
blocking sockets "connect" always returns 0
Running on windows 7,
using example code...
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
my "connect" function always immediately returns 0; even when not really connected to anything.
And then my recv function will sit for about 30 seconds then timeout.
I tried specifying every WinSoc ver on WSAStartup from 1.0 to 2.2, all have same effect.
I'm using MinGW, No MFC. Is there something else I should be doing?
Code:
//request to startup use for sockets version 2.0
WSADATA wsaData;
int ret = WSAStartup(WSA_VER,&wsaData);
if(ret!=0)
{
TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
return FALSE;
}
//create a TCP socket
SOCKET soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(soc == INVALID_SOCKET)
{
TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
WSACleanup();
return FALSE;
}
//check if we have a host name or IP address
BOOL bIsHost = isalpha(sServ[0]);
//resolve IP if needed
LPHOSTENT hostEntry = {0};
if(bIsHost)//resolve hostname to IP address list
{
hostEntry = gethostbyname(sServ);
//display IP address in debugger screen (just display the first IP in the list of returned IP's)
TRACE("\nRESOLVED IP: %s", (char*)inet_ntoa(*(in_addr*)hostEntry->h_addr_list[0]) );
TRACE("\nRESOLVED HOSTNAME: %s", (char*)hostEntry->h_name );
if(!hostEntry)
{
TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
WSACleanup();
return FALSE;
}
}
//connection data
sockaddr_in con;
con.sin_family = AF_INET;
if(bIsHost)
{ con.sin_addr.s_addr = *(u_long*)hostEntry->h_addr_list[0]; }//use the IP address we resolved
else
{ con.sin_addr.s_addr = inet_addr(sServ); }//an IP was passed in, so just use that
con.sin_port = htons(iPort);
//try to connect
ret = connect(soc,(SOCKADDR*)&con,sizeof(con));
if(ret != 0)
{
TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
WSACleanup();
return FALSE;
}
TRACE("\n Connect Returned: %d, socket value = %d",ret,soc);
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|