• Advertisement

Archived

This topic is now archived and is closed to further replies.

Winsock Woes

This topic is 5553 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hiya, Im trying to get a derived class of CAsyncSocket to work in an MFC dialog window. For some reason though, when I call Create(...), It returns false (Same with any other socket functions like Connect or Listen)... Any idea whats going on? Heres the code for my class:
  
class CsckListen : public CAsyncSocket
{
	DECLARE_DYNCREATE(CsckListen);
	
protected:
	virtual void OnAccept(int nErrorCode);
};

IMPLEMENT_DYNCREATE(CsckListen,CAsyncSocket);

void CsckListen::OnAccept(int nErrorCode)
{
	MessageBox(NULL,"Somebodys trying to connect!!!!","Work!!!!!",MB_OK);
};


CsckListen Sock;
  
and heres the code that Creates the sock:
  
void CSockDlg::OnButton1() 
{
	
bool test =Sock.Create(77);
if(test==true) { MessageBox("True",NULL,MB_OK); }
}
  
I never get the msgbox though, so my create is always failing :s Any ideas? Thanks

Share this post


Link to post
Share on other sites
Advertisement
Use GetLastError after Create returns 0 to see what the error was.

Here is a table of error numbers, the code, and a description:
   Windows Sockets code   Error   Description
------------------------------------------------------------------------

WSAEINTR 10004 Interrupted system call.
WSAEBADF 10009 Bad file number.
WSEACCES 10013 Permission denied.
WSAEFAULT 10014 Bad address.
WSAEINVAL 10022 Invalid argument.
WSAEMFILE 10024 Too many open files.
WSAEWOULDBLOCK 10035 Operation would block.
WSAEINPROGRESS 10036 Operation now in progress. This error is
returned if any Windows Sockets API
function is called while a blocking
function is in progress.
WSAEALREADY 10037 Operation already in progress.
WSAENOTSOCK 10038 Socket operation on nonsocket.
WSAEDESTADDRREQ 10039 Destination address required.
WSAEMSGSIZE 10040 Message too long.
WSAEPROTOTYPE 10041 Protocol wrong type for socket.
WSAENOPROTOOPT 10042 Protocol not available.
WSAEPROTONOSUPPORT 10043 Protocol not supported.
WSAESOCKTNOSUPPORT 10044 Socket type not supported.
WSAEOPNOTSUPP 10045 Operation not supported on socket.
WSAEPFNOSUPPORT 10046 Protocol family not supported.
WSAEAFNOSUPPORT 10047 Address family not supported by protocol
family.
WSAEADDRINUSE 10048 Address already in use.
WSAEADDRNOTAVAIL 10049 Cannot assign requested address.
WSAENETDOWN 10050 Network is down. This error may be
reported at any time if the Windows
Sockets implementation detects an
underlying failure.
WSAENETUNREACH 10051 Network is unreachable.
WSAENETRESET 10052 Network dropped connection on reset.
WSAECONNABORTED 10053 Software caused connection abort.
WSAECONNRESET 10054 Connection reset by peer.
WSAENOBUFS 10055 No buffer space available.
WSAEISCONN 10056 Socket is already connected.
WSAENOTCONN 10057 Socket is not connected.
WSAESHUTDOWN 10058 Cannot send after socket shutdown.
WSAETOOMANYREFS 10059 Too many references: cannot splice.
WSAETIMEDOUT 10060 Connection timed out.
WSAECONNREFUSED 10061 Connection refused.
WSAELOOP 10062 Too many levels of symbolic links.
WSAENAMETOOLONG 10063 File name too long.
WSAEHOSTDOWN 10064 Host is down.
WSAEHOSTUNREACH 10065 No route to host.
WSASYSNOTREADY 10091 Returned by WSAStartup(), indicating that
the network subsystem is unusable.
WSAVERNOTSUPPORTED 10092 Returned by WSAStartup(), indicating that
the Windows Sockets DLL cannot support
this application.
WSANOTINITIALISED 10093 Winsock not initialized. This message is
returned by any function except
WSAStartup(), indicating that a
successful WSAStartup() has not yet been
performed.
WSAEDISCON 10101 Disconnect.
WSAHOST_NOT_FOUND 11001 Host not found. This message indicates
that the key (name, address, and so on)
was not found.
WSATRY_AGAIN 11002 Nonauthoritative host not found. This
error may suggest that the name service
itself is not functioning.
WSANO_RECOVERY 11003 Nonrecoverable error. This error may
suggest that the name service itself is
not functioning.
WSANO_DATA 11004 Valid name, no data record of requested
type. This error indicates that the key
(name, address, and so on) was not found.


You'll want to use that table primarily to associate the number with the code, and then use the CAsyncSocket::Create documentation to get a more MFC specific description. It will only return a subset of the above errors.

[edited by - Zipster on December 7, 2002 11:41:38 PM]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
CAsyncSocket is the most buggiest (yup imporper grammer to emphasize) part of MFC. use threads and your own class to do it.

Share this post


Link to post
Share on other sites

  • Advertisement