So ermitteln Sie den TCP-Verbindungsschluss mithilfe des Net-Pakets
Problem:
Bei der Implementierung Bei einem TCP-Server ist es wichtig zu wissen, wann Clients ihre Verbindungen schließen. Wie können Sie dies anhand des Net-Pakets ermitteln?
Antwort:
Um eine geschlossene TCP-Verbindung zu erkennen, können Sie die folgende Methode verwenden:
one := make([]byte, 1) c.SetReadDeadline(time.Now()) if _, err := c.Read(one); err == io.EOF { // Connection closed } else { // Connection still open }
Dieser Ansatz umfasst:
Timeout-Erkennung:
Um ein Timeout zu erkennen, können Sie prüfen, ob es sich bei dem Fehler um ein Netz handelt. Fehler mit Zeitüberschreitung.
if neterr, ok := err.(net.Error); ok && neterr.Timeout() { // Timeout occurred }
Update (Go 1.7 ):
In Go 1.7 werden Null-Byte-Lesevorgänge sofort zurückgegeben und führen nie zu einem Fehler. Um dies zu berücksichtigen, muss mindestens ein Byte gelesen werden.
Das obige ist der detaillierte Inhalt vonWie kann ich das Schließen einer TCP-Verbindung im „net'-Paket von Go erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!