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 ) z=0; if(z == WSAENOBUFS ) z=0; if(z == WSAENOTSOCK ) z=0; return false;//fehler } return true; } //- return false; }