CAsynchSocket::Connect() -> WSAEINVAL



  • Laut MSDN hab ich aber eine ungültige Adresse angegeben:

    WSAEINVAL Invalid host address

    ...aber die lautet wie gesagt "pop.gmx.net" und ist korrekt (in meiner Verzweiflung hab ich es sogar schon über Telnet probiert und damit klappts).



  • poste mal einen minimalen, compilierbaren quelltext der den fehler zeigt.



  • ........ schrieb:

    poste mal einen minimalen, compilierbaren quelltext der den fehler zeigt.

    Das ist mir so leider nicht möglich, den das ganze ist als DLL implementiert und leider ziemlich komplex. Neben den Klassen und Hilfsstrukturen in der DLL müßte ich dann auch noch das zugehörige Beispielprojekt posten, und das würde hier den Rahmen sprengen 😞

    Ich könnte also höchstens ein neues Beispielprojekt erzeugen und den relevanten Code dafür anpassen. Dafür bräuchte ich aber auch einige Zeit, und ich bin mir sicher das der Fehler im Prinzip keine komplizierte Sache sein dürfte... wenn man (wie immer) nur weiß wie!



  • Das was ich gepostet hab stammt aus der Hilfe zur Funktion connect aus Winsock die CAsyncSocket natürlich auch benutzt. Such doch mal im ganzen Projekt nach "Listen" vielleicht rufst du es ja versehentlich auf.



  • Nein, Fehlanzeige. Vor Connect() wird außer Create() eigentlich gar nichts aufgerufen. Vielleicht liegts daran das ich an Create() keine Parameter übergebe, aber im CPop3-Beispiel von Codeproject wird die Funktion genauso aufgerufen. Und an der Socketklasse selbst hab ich außer OnReceive() bis jetzt auch noch nichts überschrieben.



  • warum setzt du statt "(LPCTSTR) m_pInfo->strServer" nicht direkt den string ein? nur zum testen



  • mr schrieb:

    warum setzt du statt "(LPCTSTR) m_pInfo->strServer" nicht direkt den string ein? nur zum testen

    Ich hab den String zwar schon im Debugger untersucht, aber es jetzt trotzdem nochmal ausprobiert:

    ...
    	bSuccess = m_Socket.Connect(_T("pop.gmx.net")/*(LPCTSTR) m_pInfo->strServer*/, 110);
    ...
    

    Das Ergebnis ist immer noch dasselbe 😞



  • Ok schade 😞

    Darfst du das Projekt denn weitergeben? Würde gerne mal den Fehler suchen, auch wenn es den Rahmen sprengt. 🙂



  • mr schrieb:

    Ok schade 😞

    Darfst du das Projekt denn weitergeben? Würde gerne mal den Fehler suchen, auch wenn es den Rahmen sprengt. 🙂

    Klar darf ich das weitergeben, gib mir einfach deine E-Mail Adresse. Ich schreib das Teil im Prinzip nur weil Sockets noch Neuland für mich sind.



  • Dann schicks mal an imgty@arcor.de



  • mr schrieb:

    Dann schicks mal an imgty@arcor.de

    Ok, hast Post 😉



  • Ist gut angekommen. 😉

    Ich kann allerdings deinen Fehler nicht reproduzieren. 😞 Bei mir gibt GetLastError 10035 (WSAEWOULDBLOCK) zurück - was okay ist.

    Ich hab allerdings Visual C++ 2005, du ja Visual C++ 6.



  • blockt eventuell eine personal firewall dein programm?



  • Bei @mr dürfte es wohl tatsächlich an einer Firewall liegen. Bei mir aber nicht, Port 110 ist bei mir komplett offen.



  • Bei @mr dürfte es wohl tatsächlich an einer Firewall liegen.

    Ne, bei mir funktioniert es doch. 🙂
    WSAEWOULDBLOCK ist ja kein echter Fehler, sondern nur ein Hinweis.



  • Also gibt Connect() bei Dir TRUE zurück? Ich glaub dann teste ich das morgen nochmal auf einem anderen Rechner. Falls es am Rechner liegen sollte, versteh ich allerdings nicht wieso das CPop3-Beispiel von Codeproject bei mir läuft, denn im Prinzip macht das auch nichts anderes.



  • Nein, Connect gibt FALSE zurück.

    Nonzero if the function is successful; otherwise 0, and a specific error code can be retrieved by calling GetLastError. If this indicates an error code of WSAEWOULDBLOCK, and your application is using the overridable callbacks, your application will receive an OnConnect message when the connect operation is complete.



  • Jetzt hab ich das Problem gefunden. Meine Firewall war zwar richtig eingestellt, aber erst nachdem ich sie jetzt mal komplett deaktiviert hatte, läuft auch mein Programm. Mittlerweile hab ich sie wieder eingeschaltet und nun läuft es immer noch korrekt.

    Vielleicht sollte ich mich mal bei Microsoft bedanken 😡

    Danke das Du Dir die Mühe gemacht und das ganze getestet hast @mr.


Anmelden zum Antworten