Wie erkenne ich das Ende einer TCP Verbindung

MD1978

Erfahrenes Mitglied
Hallo,
ich baue zwischen zwei Rechnern über TCP eine Socket-Verbindung auf.
Wie erkenne ich, dass die Gegenseite die Verbindung beendet hat?

Gruss,

MD
 
Danke für den Link.
Ich habe folgenden Code:

TcpListener tcpListener = new TcpListener(sampleTCPPort);
try {
while (true) {
tcpListener.Start();
Socket soTCP = tcpListener.AcceptSocket();

Byte[] received = new Byte[512];
int bytesReceived = soTCP.Receive(received, received.Length, 0);
String dataReceived = System.Text.Encoding.ASCII.GetString(received);
...


Wie erkenne ich jetzt, wenn die Gegenseite die TCP-Vebindung beendet?

Gruss,

MD
 
Ich habe das mal so gelöst:

Exceptions beim Senden und Empfangen fange ich ab. Wenn der Fall eingetreten ist versuche ich nochmal was zu senden. Das kann ein String sein wie z.B.
"ConnectionAlive" Lass Dir was einfallen.
Dein Gegenüber sollte Dir nun auch mitteilen das es so ist.
"Connected"
Falls die Sache wieder abschmiert kannst Du dir sicher sein das die Verbindung tot ist.

Andernfalls kann deine Gegenstelle auch ankündigen das sie sich verabschiedet. "$$TermitateConnection$$"

Kannst auch mal in diesen [thread=179619]Thread[/thread] als zusätlichen Denkanstoß schauen.

MFG cosmo
 
Hallo,

so habe ich das auch gemacht. Ich frage mich nur, ob dass nicht eleganter und effizienter geht. Der Client schließt ja mit tcpClient.close() explizit die Verbindung. Kommt diese Information bei TCP nicht beim Server an?

MD
 

Neue Beiträge

Zurück