Go でのダイヤルでソース インターフェースを設定する
複数のインターフェースを持つネットワークでは、特定のインターフェースを使用して接続をダイヤルすることが必要な場合があります。 。 Go の低レベルの性質にもかかわらず、標準ライブラリは本質的にこれをサポートしません。
これを試みるために、InterfaceByName を使用してターゲット インターフェイス eth1 を取得し、Addrs を使用して最初のアドレスを抽出し、取得したアドレスをLocalAddrとして取得します。ただし、「ローカル アドレスの種類が一致しません」というエラーが発生します。
この問題は、インターフェイスから取得されたアドレスが、アドレスとネットマスクの両方を表す *net.IPnet タイプであるために発生します。ダイヤルするには、アドレスとポートである *net.TCPAddr が必要です。
この問題を解決するには、インターフェイス アドレスを *net.IPnet としてアサートした後、*net.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, }
この構成により、ダイヤラは指定されたインターフェイスを使用して接続を確立できるようになります。
以上がGo でダイヤルするためのネットワーク インターフェイスを指定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。