> 백엔드 개발 > Golang > golang 닫기 소켓

golang 닫기 소켓

王林
풀어 주다: 2023-05-16 14:50:37
원래의
713명이 탐색했습니다.

Golang은 고성능의 확장 가능한 웹 애플리케이션을 쉽게 만들 수 있게 해주는 비교적 새로운 프로그래밍 언어입니다. 네트워크 프로그래밍의 경우 Golang은 네트워크 애플리케이션 작성을 더 쉽게 해주는 내장 TCP 라이브러리를 제공합니다. 네트워크 애플리케이션을 개발할 때 서버와 클라이언트 간의 통신을 종료하기 위해 소켓 연결을 닫아야 하는 경우가 있습니다. 이번 글에서는 Golang에서 소켓 연결을 닫는 방법을 소개하겠습니다.

  1. 소켓 연결 만들기

Golang에서는 표준 라이브러리의 net 패키지를 사용하여 소켓 연결을 만들 수 있습니다. TCP 연결을 사용할 때 Dial 기능을 사용하여 연결을 설정할 수 있습니다.

conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
    log.Fatal(err)
}

// 使用连接进行通信
// ...

// 关闭socket连接
conn.Close()
로그인 후 복사

이 코드에서는 Dial 기능을 사용하여 로컬 호스트의 포트 번호 8080과 TCP 연결을 설정합니다. 이 함수를 호출하면 연결 개체 conn과 가능한 오류가 반환됩니다. conn 객체를 사용하여 통신한 후에는 리소스를 해제하고 통신을 종료하기 위해 제때에 서버와의 연결을 닫아야 합니다.

  1. 서버 측에서 소켓 연결 닫기

서버 측에서는 클라이언트와의 통신을 종료해야 할 때 생성된 소켓 연결을 닫아야 합니다. Go 언어의 내장 net 패키지와 os 패키지를 사용하여 소켓 연결 핸들을 얻은 다음 os 패키지에 제공되는 Close 메서드를 사용하여 연결을 닫을 수 있습니다. 예:

// 监听端口并接受客户端连接
listener, err := net.Listen("tcp", ":8080")
if err != nil {
    log.Fatal(err)
}

for {
    // 接受客户端连接
    conn, err := listener.Accept()
    if err != nil {
        log.Fatal(err)
    }

    // 使用连接进行通信
    // ...

    // 关闭连接
    conn.(*net.TCPConn).Close()
}
로그인 후 복사

이 코드에서는 net 패키지의 Listen 함수를 사용하여 포트를 수신하고 Accept 함수를 사용하여 클라이언트에서 시작된 연결을 수락합니다. 연결을 사용하여 통신한 후 포인터 형식 변환을 사용하여 conn 개체를 *net.TCPConn 형식으로 변환하고 Close 메서드를 사용하여 연결을 닫습니다.

  1. 클라이언트 측에서 소켓 연결 닫기

클라이언트 측에서는 연결 개체의 Close 메서드를 호출하여 서버와의 연결을 닫을 수 있습니다. 예:

conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
    log.Fatal(err)
}

// 使用连接进行通信
// ...

// 关闭连接
conn.Close()
로그인 후 복사

이 코드에서는 Dial 함수를 사용하여 로컬 호스트의 포트 번호 8080과 TCP 연결을 설정하고, 통신이 완료된 후 Close 메소드를 사용하여 연결을 닫습니다. 이 코드는 클라이언트 측에서 연결이 닫힌 경우에만 작동하고, 서버 측에서 연결이 닫힌 경우에는 작동하지 않습니다.

Summary

Golang에서는 표준 라이브러리의 net 패키지를 사용하여 소켓 연결을 만들고, Dial 함수를 사용하여 클라이언트에 대한 연결을 만들고, Listen 함수를 사용하여 서버에 대한 연결을 만들 수 있습니다. 연결 개체의 Close 메서드를 사용하여 연결을 닫을 수 있습니다. 이는 리소스를 해제하고 통신을 종료하는 효율적인 방법이므로 웹 애플리케이션을 개발할 때 명심해야 합니다.

위 내용은 golang 닫기 소켓의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿