The problem is this: with no server listening on the port the client will process connect and respond with a success. Futhermore, I can go on to send() data and it will come back saying that it sent the requested number of bytes.
When a server is listening it works fine.
Note: POSTBUFF; is just a #define that prints szBuffer to an edit box.
Code:if ( iError = WSAStartup (MAKEWORD (2,0), &WSAData) ) { wsprintf(szBuffer, TEXT("WSAStartup() error #%i.\r\n"), WSAGetLastError() ); POSTBUFF; return 0; } wsprintf(szBuffer, TEXT("Started up %hs\r\n"), WSAData.szDescription); POSTBUFF; if ( (lpHostEntry = gethostbyname("Michael")) == NULL) { wsprintf(szBuffer, TEXT("gethost error %i"), WSAGetLastError() ); POSTBUFF; } if ( (sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) ) == INVALID_SOCKET) { wsprintf(szBuffer, TEXT("sock error #%i\r\n"), WSAGetLastError() ); POSTBUFF; } if (SOCKET_ERROR == WSAAsyncSelect (sock, hwnd, WM_SOCKET_NOTIFY, FD_CONNECT | FD_READ | FD_ACCEPT | FD_WRITE | FD_CLOSE | FD_OOB) ) { wsprintf(szBuffer, TEXT("WSAAsyncSelect sock error #%i.\r\n"), WSAGetLastError() ); POSTBUFF; closesocket (sock); } sa.sin_family = AF_INET; sa.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list); sa.sin_port = htons(9143); temp = connect (sock, (LPSOCKADDR)&sa, sizeof(struct sockaddr) ); if ( temp == SOCKET_ERROR && (iError = WSAGetLastError()) != WSAEWOULDBLOCK) { wsprintf(szBuffer, TEXT("\r\nConnect() error. %i"), iError ); POSTBUFF; closesocket (sock); return 0; } else PostText (hMessages, "\r\nConnect() successful");



LinkBack URL
About LinkBacks


