ネットパッケージを使用して TCP 接続の終了を判断する方法
問題:
実装時TCP サーバーの場合、クライアントがいつ接続を閉じるかを知ることが不可欠です。ネット パッケージを使用してこれを確認するにはどうすればよいですか?
答え:
閉じられた TCP 接続を検出するには、次の方法を使用できます:
one := make([]byte, 1) c.SetReadDeadline(time.Now()) if _, err := c.Read(one); err == io.EOF { // Connection closed } else { // Connection still open }
このアプローチには以下が含まれます:
タイムアウト検出:
タイムアウトを検出するには、エラーがネットかどうかを確認できます。タイムアウトによるエラー。
if neterr, ok := err.(net.Error); ok && neterr.Timeout() { // Timeout occurred }
アップデート (Go 1.7) ):
Go 1.7 では、ゼロバイトの読み取りはすぐに返され、エラーにはなりません。これを考慮するには、少なくとも 1 バイトを読み取る必要があります。
以上がGo の「net」パッケージで TCP 接続の終了を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。