Problem mit CAsyncSocket



  • Hi Leute,

    ich bekomme bei der Methode bind(...,...) der MFC-Klasse CAysncSocket immer den Rückgabewert 0 und laut Hilfe steht 0 für einen Fehler. Nun hab ich mit der Methode GetLastError() die Fehlermeldung feststellen können, es ist WSAINVAL. Laut Hilfe liegt es wohl daran das er schon 'verbunden' ist, nur kann das nicht sein.

    //in der stdafx.h
    #include <afxsock.h> 
    
    //in der InitInstance() der App-Klasse
    if(!AfxSocketInit(NULL))
          AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP);
    
    //in der Dlg-Klasse
    public:
        CAysncSocket  m_ASocket;
    
    //folgende Methode ruf ich nach keinem button-klick auf
    bool CCSocketTestDlg::erstelle_server(void)
    {
         if(!m_ASocket.Create(m_uiPort,SOCK_DGRAM) )  //soll UDP nicht TCP
         {
    	return false;
         }
         else
         {
    	int z;
    	struct sockaddr_in addr; 
    	memset(&addr, 0, sizeof(addr));  //addr nullen
             addr.sin_family = AF_INET; 
             addr.sin_port = htons(m_uiPort); 
             addr.sin_addr.S_un.S_addr = INADDR_ANY; 
    	if(! m_ASocket.Bind((const sockaddr*)&addr, sizeof(addr)) ) 
    	{
    	    z=m_ASocket.GetLastError();
    			if(z == WSANOTINITIALISED )
    				z=0;
    			if(z == WSAENETDOWN )
    				z=0;
    			if(z == WSAEADDRINUSE )
    				z=0;
    			if(z == WSAEFAULT )
    				z=0;
    			if(z == WSAEINPROGRESS )
    				z=0;
    			if(z == WSAEAFNOSUPPORT )
    				z=0;
    			if(z == WSAEINVAL )  // <- der fehler tritt auf
    				z=0;  
    			if(z == WSAENOBUFS  )
    				z=0;
    			if(z == WSAENOTSOCK  )
    				z=0;
    
    			return false;//fehler
    		}
    		return true;
    	}
    	//-
    	return false;
    }
    

Anmelden zum Antworten