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 MFCIch 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 wollteWenn ich wieder zu Hause bin schau ich mir das
nochmals alles an. Vielleicht kann ich dann ja
noch mehr Code posten. Dank dir !