CAsyncSocket und WSAEINVAL (10022)
-
Ich schaffe es nicht einen Socket zu initialisieren!?
In meiner InitInstance() rufe ich AfxSocketInit() auf.
Meine Subclass erbt von CAsyncSocket:// MainFrm.h CCustomSocket cSvrSock; // MainFrm.cpp void CMainFrame::OnButton() { cSvrSock.CreateSocket(1234, SOCK_STREAM); }
CCustomSocket::CCustomSocket() { } BOOL CCustomSocket::CreateSocket(UINT uPort, int iSockType) { if (CAsyncSocket::Create(uPort, iSockType) == FALSE) // Hier tritt der Fehler auf! ASSERT(FALSE); else if (CAsyncSocket::Listen() == FALSE) ASSERT(FALSE); else return (TRUE); return (FALSE); }
'Create()' (Siehe Markierung) liefert mir FALSE zurück. Und 'GetLastError()' liefert mir 'WSAEINVAL (10022)' zurück.
Zum probieren habe ich eine Konsolenanwendung erstellt:
WSAStartup(), SOCKET, socket(AF_INET, SOCK_STREAM, NULL)Dort tritt der gleiche Fehler auf!
Gruß,
Marco
-
Das selbe Programm funktioniert in meiner virtuellen Maschine!?
In der VM und meinem PC laufen Windows 7. Meine IDE ist Visual Studio 2012.
-
Kann das Problem jetzt um gehen, aber es ist nicht gelöst..
Ich arbeite mit einem netzlaufwerk. Wenn ich die .exe Datei auf meine lokale Festplatte kopiere funktioniert es, es ist also ein Windows Problem.
-
Glaube ich nicht.
Hast Du einen speziellen Virenschutz oder eine spezielle Firewall?Evtl. behandelt die Dein Programm von einem Netzwerklaufwerk anders.
-
Firewall und Virenprogramme hab ich schon getestet.
Habe aber auch schon Internet einstellungen (Vertrauenswürdige Zonen usw.) getestet, ohne Erfolg.
In der Ereignisanzeige steht auch nichts drin.Bin mir doch ziemlich Sicher dass es eine von solchen Einstellungen sein muss..
-
Such doch im Internet! Andere hatten schon vor dir das Problem:
http://social.msdn.microsoft.com/Forums/en-US/wsk/thread/3076a9cd-57a0-418d-8de1-07adc3b486bb/
It has to do with users not having read access at higher level directories.
-
Aber dafür gibt es einen Hotfix:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;2649107