Net 패키지를 사용하여 TCP 연결 종료를 결정하는 방법
문제:
구현 시 TCP 서버에서는 클라이언트가 언제 연결을 닫는지 아는 것이 중요합니다. net 패키지를 사용하여 이를 어떻게 확인할 수 있습니까?
답변:
닫힌 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에서는 0바이트 읽기가 즉시 반환되며 오류가 발생하지 않습니다. 이를 설명하려면 최소한 1바이트를 읽어야 합니다.
위 내용은 Go의 `net` 패키지에서 TCP 연결 종료를 어떻게 감지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!