2010-11-23 17 views
3

Meine Anwendung verbindet sich als Client über ein Ethernet mit einem Serverprozess.Zurücksetzen der Socket-Verbindung

Da der Server gut bekannt und wird sich nicht ändern, UDP und TCP sind beide Setup

socket(); 
setsockopt(SO_REUSEADDR); 
bind(); 
connect(); 

das Verbindungsprotokoll mit umfasst Herzschläge in beide Richtungen gesendet.

Wenn ich einen Fehler mit der Verbindung z. hearbeat timeout, ich muss die Verbindung zurücksetzen.

Ist es ausreichend, nur() mit der NULL-Adresse zu verbinden und dann nach einer kurzen Pause() erneut zu verbinden, oder sollte ich den Socket schließen und dann neu initialisieren?

dank

Antwort

1

Sie müssen close(2) den Sockel und alles wieder tun. Warum hast du bind(2) auf dem Client?

+0

Ich bind(), so dass der Quellport und die Adresse angegeben ist - der Server akzeptiert nur Verbindungen von bekannten Ports und Adressen. – DanS

2

Nach einem Socket-Fehlern müssen Sie die eine in der Hand verwerfen und das Setup mit einem neuen Sockel neu starten.

Winsock documentation, zum Beispiel:

Wenn eine Verbindung zwischen den Buchsen gebrochen ist, sollten die Steckdosen verworfen und neu erstellt werden. Wenn sich ein -Problem an einem verbundenen -Socket entwickelt, muss die Anwendung verwerfen und die erforderlichen Sockets in neu erstellen, um zu einem stabilen Punkt zurückzukehren.

Verwandte Themen