Golang の特定のアドレス/インターフェイスでダイヤルできますか?
Go がシステム プログラミング言語として登場すると、ユーザーは自然に高度な機能について問い合わせるようになります。ネットワーキング機能。このようなクエリの 1 つは、指定されたネットワーク インターフェイスを介した接続の確立を中心に展開します。
これに対処するために、ネット パッケージとそのインターフェイス処理機能を調べてみましょう。 Go では、InterfaceByName() を使用して名前でインターフェイスを取得できますが、その後の IP アドレスの取得は若干複雑になります。
Addrs() メソッドは、IPv4 アドレスと IPv6 アドレスの両方を含むアドレスのスライスを返します。最初のアドレスを選択すると、それがインターフェイスの送信元アドレスに対応すると想定されますが、これが常に当てはまるとは限りません。さらに、取得されたアドレスのタイプは *net.IPnet で、IP アドレスとそれに関連付けられたネットマスクの両方をカプセル化します。
カスタム ローカル アドレスとの TCP 接続を確立するには、ネットを構築する必要があります。 TCPAddr オブジェクト。このオブジェクトには、net.IPnet タイプではなく、特定の IP アドレスが必要です。したがって、取得した *net.IPnet オブジェクトから IP アドレスを抽出する必要があります。
提供されたコードは、抽出された IP アドレスで新しい TCPAddr を作成することによってこのプロセスを示しています。
ief, err := net.InterfaceByName("eth1") if err != nil { log.Fatal(err) } addrs, err := ief.Addrs() if err != nil { log.Fatal(err) } tcpAddr := &net.TCPAddr{ IP: addrs[0].(*net.IPNet).IP, }
Byこれらの手順に従うことで、開発者は Golang のシステム プログラミング適性に伴う柔軟性を活用して、Golang の特定のアドレスとインターフェイスを介してネットワーク接続を効果的に確立できます。
以上がGo でダイヤルするときにネットワーク インターフェイスとアドレスを指定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。