Angenommen, ich habe einen Socket, den ich durch den Systemaufruf socket()
erstellt habe. Danach habe ich einen connect()
gemacht und angefangen, Daten zu senden und zu empfangen. ÄhnlichWenn send()/recv() fehlschlägt. Wo steht die Steckdose?
, auf der anderen Seite, eine Buchse mit dem socket()
Systemaufruf erstellt wurde, und dann bind()
, listen()
und accept()
genannt wurden. Dann begann diese Seite auch zu kommunizieren.
Nehmen wir an, einer der send()
(und entsprechend recv()
auf der anderen Seite) schlägt fehl.
Was ich möchte, wo würde diese Steckdose nach dem Scheitern stehen?
wieder zu kommunizieren, sollte ich die Fassung wieder schaffen und tun connect()
(bind()
, listen()
und accept()
auf der anderen Seite), oder ich kann send()
und recv()
erneut versuchen? Und was ist das Beste, was man in einem solchen Szenario tun kann?
HINWEIS: Wir wissen nicht, was der Grund für die recv()
send()
/ist zum Scheitern verurteilt. Es kann alles sein, von einem physischen Drahtbruch bis zur Ablehnung der anderen Seite (möglicherweise unter Verwendung von iptables).
Dann würde eine Wiederherstellung von einem defekten Netzwerk zu einer Überprüfung aller Rückgabewerte und dann zu den entsprechenden Schritten führen? – Haris
@Haris Der, den Sie wahrscheinlich überprüfen möchten, ist, wenn 'send' -1 zurückgibt und' errno' 'ECONNRESET' ist. Für jeden anderen Wert sollte es sicher sein, es erneut zu versuchen. – dbush
Ok. Vielen Dank. Das hat geholfen. – Haris