hallo,
hab mal wieder nen problem mit der Socketprogrammierung. zu dem zweck hab ich mir nen server geschrieben, der mehrere verbindungen verwaltet. Hier die Methode, welche für das Empfangen von Nachrichten zuständig ist...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| private void receiving(object temp) { int nr = (int)temp; string ip = ""; try { ip = client[nr].Client.RemoteEndPoint.ToString(); } catch { } try { while (client[nr].Connected) { while (!(client[nr].Available>0)) { Thread.Sleep(200); } client[nr].Client.Receive(data); lastreceived = Encoding.ASCII.GetString(data); OnReceive(this, new EventArgs()); } } catch { } free[nr] = true; currconn--; ipoflastdisconnectedclient = ip; OnClientDisconnect(this, new EventArgs()); } |
das problem: die methode beendet sich nicht, was sie eigentlich soll, wenn sich der client disconnectet hat. die methode durchläuft immer wieder die markierte schleife...
hab schon versucht, die schleifenbedingung so zu modifizieren:
while ((!(client[nr].Available>0)) && client[nr].Connected)
bringt leider auch nix
hoffe mal, mir kann jemand helfen
mfg