WSAEWOULDBLOCK CAsyncSocket



  • Moin, habe folgendes Problem, habe ein kleines Programm geschrieben, in dem sich einfach ein Client mit einem Server connecten soll, mehr nicht.
    Der Server wird am Anfang aufgerufen, wenn man es auswählt, also wenn der PC ein Server sein soll.

    if(beginnDlg.m_serverfrage == true)
    	{
    
    		if(m_connect.Create(4000))
    		{
    			if(m_connect.Listen())
    			{
    				if(m_connect.Accept(m_connected))
    				{
    
    				}
    				else
    				{
    				//WSAEWOULDBLOCK 
    				}
    			}
    			else
    			{
    			AfxMessageBox("Keine Verbindung!");
    			}
    
    		}
    		else
    		{
    		AfxMessageBox("Server konnte nicht eingerichtet werden!");
    		}
    

    Der Client wird über einen Button aufgerufen, falls der PC kein Server sein soll. Die IP ist hier von unserm Schulnetzwerk und ist die richtige...

    void CNogameV02Dlg::OnConnecten() 
    {
    	if(serverfrage == false)
    	{
    		if(m_connect.Create())
    		{
    			if(m_connect.Connect("10.101.104.23",4000))
    			{
    				AfxMessageBox("Test bestanden!");
    				GetDlgItem(IDC_Connecten)->EnableWindow(false);
    			}
    			else
    			{
    				AfxMessageBox("Server nicht gefunden!");
    
    			}
    		}
    		else
    		{
    		AfxMessageBox("Client konnte nicht eingerichtet werden!");
    		}
    	}
    }
    

    Jetzt die Frage: Warum gibt der an der oben genannten Stelle, WSAEWOULDBLOCK aus? (Wenn ich getlasterror drin habe) Gibt es da einen Allgemeinen Fehler den jeder mal macht?
    Bin noch Anfänger... also hab ich nicht so die Ahnung

    Danke



  • Schau Dir mal Accept von CAsyncSocket genau an.

    [Google: site:msdn.microsoft.com
    virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );

    Parameters

    rConnectedSocket <<

    A reference identifying a new socket that is available for connection.
    ](https://www.google.de/search?&q=site%3Amsdn.microsoft.com virtual BOOL Accept( CAsyncSocket%26amp%3B rConnectedSocket%2C SOCKADDR* lpSockAddr %3D NULL%2C int* lpSockAddrLen %3D NULL )%3B Parameters rConnectedSocket %26lt%3B%26lt%3B A reference identifying a new socket that is available for connection. )

    Du muß eine Referenz auf ein neues Socket-Object übergeben.

    Also stell dein Server so um dann sollte es gehen.

    if(beginnDlg.m_serverfrage == true)
        {
            CAsyncSocket m_listen;
            if(m_listen.Create(4000))
            {
                if(m_listen.Listen())
                {
                    if(m_listen.Accept(m_connected))
                    {
    
                    }
                    else
                    {
                    //WSAEWOULDBLOCK 
                    }
                }
                else
                {
                AfxMessageBox("Keine Verbindung!");
                }
    
            }
            else
            {
            AfxMessageBox("Server konnte nicht eingerichtet werden!");
            }
    

    Gruß


Log in to reply