Thread: socket.receive()
-
hallo schon wieder mal ne frage,
ich habe ein kleines programm geschrieben, dass auch sockets basiert.
Das Programm soll multithreading fähig sein doch ich habe das problem,
in meinem Thread befindet sich eine art endlosschleife, diese Methode (Thread) befindet sich in einer klasse in der ich einen abruchparameter als instanzvariable definiert habe.Wenn ich in meinem programm auf ende cklicke dann wird dieser parameter gesetzt über eine entsprehende methode, mach ich das am ende des threads ist alles ok mach ich das doch zwischen senden von daten und empfangen von daten läuft er mir immer in diese zeile:
int iRx = m_socClient.Receive(buffer);
und kehr nicht wieder zurück, was ist da passiert woran kann das liegen, ich mach im ende click nichts anderes auser die instanzvariable zu setzen und eine endloschleife über die threads laufen zulassen und den isAlive status abzufragen.
Es kann allerhöchstens sein das er den parameter setzt, und in eine endlosschleife läuft, weil der reciev keine daten bekommt was eigentlich auch nicht möglich ist, da der test ohne Beenden einwandfrei läuft.
Nunja falls ihr noch was wissen müßt um mir zu helfen einfach posten,
ansonsten hoffe ich ihr könnt mir helfen
mfg finalmove.
-
Receive() ist synchron. Wenn keine Daten zum Client geschickt werden, dann wartet der Client dort unendlich auf Daten (per default).
-
und wie kann ich das umstellen, dass wenn er einige zeit nichtsbekommt weiter macht.