golang ソケットを閉じる

王林
リリース: 2023-05-16 14:50:37
オリジナル
675 人が閲覧しました

Golang は、高パフォーマンスでスケーラブルな Web アプリケーションを簡単に作成できる比較的新しいプログラミング言語です。ネットワーク プログラミング用に、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 メソッドを使用して接続を閉じます。このコードは、接続がサーバー側で閉じられた場合ではなく、クライアント側で接続が閉じられた場合にのみ機能することに注意してください。

概要

Golang では、標準ライブラリの net パッケージを使用してソケット接続を作成し、Dial 関数を使用してクライアントの接続を作成し、Listen 関数を使用してサーバーへの接続を作成します。接続オブジェクトの Close メソッドを使用して接続を閉じることができます。これはリソースを解放して通信を終了する効率的な方法であるため、Web アプリケーションを開発する際には留意する必要があります。

以上がgolang ソケットを閉じるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート