近年、golang 言語は多くの開発者の間で広く注目を集めています。その理由は、golang には優れたパフォーマンス、高効率、高度なメモリ管理など、多くの利点があるためです。ただし、開発に golang を使用すると、いくつかの問題も発生します。その 1 つは、ポートを削除する方法です。この記事では、golangを使用してポートを削除する方法を紹介します。
まず、ポートとは何かを知る必要があります。簡単に言うと、ポートは、ピア (コンピュータと Web サイトのサーバーなど) 間の接続を識別するために使用されるトランスポート層プロトコル (TCP や UDP など) です。 golang では、net パッケージを通じてポートを使用できます。以下は簡単な使用例です:
package main import ( "fmt" "net" ) func main() { addr, err := net.ResolveTCPAddr("tcp", "localhost:8080") if err != nil { fmt.Println(err) } ln, err := net.ListenTCP("tcp", addr) if err != nil { fmt.Println(err) } for { conn, err := ln.Accept() if err != nil { fmt.Println(err) continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { defer conn.Close() // 在这里处理连接 }
このコードは、golang の net パッケージを使用して TCP ポートをリッスンし、確立された接続を処理する方法を示しています。ただし、ここではポートの使用方法ではなく、ポートを削除する方法に焦点を当てます。
次に、golangを使ってポートを削除する方法を紹介します。 localhost
でポートレス TCP 接続をリッスンしたいとします。次のコードを使用できます。
package main import ( "fmt" "net" ) func main() { l, err := net.Listen("tcp", ":") if err != nil { fmt.Println(err) return } for { conn, err := l.Accept() if err != nil { fmt.Println(err) continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { defer conn.Close() // 在这里处理连接 }
このコードは、TCP ポートのアドレス パラメーターを に設定します。
ポートを削除するには。これは多くの状況で機能します。ただし、特別な場合には、これをよりきめ細かく制御する必要がある場合があります。
リスニング IP アドレスとポートをより適切に制御するために、net.InterfaceAddrs() 関数を使用してバインドできます。以下にコード例を示します。
package main import ( "fmt" "net" ) func main() { iface, err := net.InterfaceByName("en0") if err != nil { fmt.Println(err) return } addrs, err := iface.Addrs() if err != nil { fmt.Println(err) return } for _, addr := range addrs { ipaddr := addr.(*net.IPNet).IP if ipaddr.To4() != nil { laddr := &net.TCPAddr{IP: ipaddr, Port: 0} l, err := net.ListenTCP("tcp", laddr) if err != nil { fmt.Println(err) continue } fmt.Println(l.Addr().String()) for { conn, err := l.Accept() if err != nil { fmt.Println(err) continue } go handleConnection(conn) } } } } func handleConnection(conn net.Conn) { defer conn.Close() // 在这里处理连接 }
このコードは、インターフェイスの IP アドレスのリストを取得し、各アドレスを反復処理して、そのアドレスにポートレス リスナーをバインドしようとします。同時に、バインドが成功するたびに、バインドされたアドレスとポート情報が出力されます。もちろん、出力結果からポート部分をフィルタリングしてポートを削除することもできます。
要約すると、golang を使用してポートを削除する方法は非常に簡単で、net パッケージで提供されるいくつかの実用的な機能を理解するだけで済みます。次に、この記事が役に立ち、golang 開発でポートをより正確に制御できるようになることを願っています。
以上がgolangでポートを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。