CAsyncSocket in einem Thread ?



  • Ich habe bisher noch nie etwas mit Sockets oder Threads gemacht,
    da ich erst mit C++ anfange. Besonders faszinierend ist halt MFC 🙂

    Ich versuche eine Anfrage an einen PC im LAN zu stellen.

    In der sich verbindenden Anwendung habe ich folgendes in OnInitDialog:

    pSocket.Create();
    

    Entsprechend wurd eine Membervariable angelegt:

    CAsyncSocket pSocket;
    

    Ich habe einen Thread angelegt, der die Funktion test() aufruft.
    In dieser Funktion soll nun alle 5 Sekunden eine Anfrage an den
    anderen PC gestellt werden.

    Es gibt zwar Netzwerktraffic, aber nur 2x. Danach lebt der Thread zwar noch
    irgendwie, aber das war es dann auch mit den Verbindungsversuchen.

    while (m_Flag)  //m_Flag ist = 1, also Thread laufen lassen
      { 
    Sleep(5000);
    pSocket.Connect("192.168.55.5",139); 
     }
    

    Muss ich jetzt nicht noch irgendwie den ersten Versuch des Connect
    mit dem Ergebnis abhandeln ? Ich vermute mal weil er keine Verbindung
    bekommt hängt dann das Connect irgendwo im Nirgendwo, oder ?

    Bin da noch absolut neu auf diesem ganzen Gebiet, aber vlt. kann mir
    ja jemand helfen 👍



  • Kann mir denn wirklich niemand helfen, oder einen
    Tipp geben woran es liegt ? 🙂



  • Du solltest Fehler abfangen und Dir angucken was da passiert:

    CString sMsg;
    while (m_Flag)  //m_Flag ist = 1, also Thread laufen lassen
    { 
        Sleep(5000);
    
        if( !pSocket.Connect("192.168.55.5",139))
        {
            sMsg.Format( "Fehler beim Erstellen einer Verbindung, Fehlernr: %i", GetLastError());
            MessageBox( NULL, sMsg, "Error", MB_ICONERROR );
        }
    }
    

    oder sowas in der Art...



  • Hallo, ich bekomme die Fehlermeldungen/Nr. 10022 und 10035

    Es scheint also im Thread alles zu funktionieren, wenn ich das
    richtig sehe, oder ? Es liegt jetzt nur noch daran, dass mein
    2ter PC keine Möglichkeit bietet sich zu verbinden!

    Mich wunderte nur, dass ich im Tray bei meinem Icon
    für die LAN-Verbindung irgendwann keinen Traffic mehr sehen konnte.
    Hmm, schmiert der Connectversuch möglicherweise irgendwann ab,
    wenn man x-mal ohne Erfolg versucht hat sich zu verbinden ?

    Wenn nicht... kann das übers Internet doch ggf. sogar teuer werden, wenn
    man nach Traffic abgerechnet wird, oder ?? 😕

    10035:
    Resource temporarily unavailable. This error is returned from operations on non-blocking sockets that cannot be completed immediately, for example recv when no data is queued to be read from the socket. It is a non-fatal error, and the operation should be retried later. It is normal for WSAEWOULDBLOCK to be reported as the result from calling connect on a non-blocking SOCK_STREAM socket, since some time must elapse for the connection to be established.

    10022:
    Invalid argument. Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket - for instance, calling accept on a socket that is not listening.



  • Vielleicht hast Du an einer anderen Stelle was "vermurkst".
    Möglicherweise könnte man was finden, wenn Du etwas mehr Code zeigst...



  • Es gibt kaum mehr Code in der Anwendung.
    Ist ja nur eine Testanwendung in der ich
    das ganze einfach mal so durchspielen wollte 🙂

    Wenn ich wieder zu Hause bin schau ich mir das
    nochmals alles an. Vielleicht kann ich dann ja
    noch mehr Code posten. Dank dir !


Anmelden zum Antworten