ホームページ >バックエンド開発 >Golang >Go で特定のインターフェイス アドレスを使用してネットワーク接続にダイヤルするにはどうすればよいですか?

Go で特定のインターフェイス アドレスを使用してネットワーク接続にダイヤルするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 14:39:10937ブラウズ

How Can I Dial a Network Connection Using a Specific Interface Address in Go?

Go で特定のインターフェイス アドレスを使ってダイヤルできますか?

Go プログラミング言語は、ネットワーク操作のための広範な機能を提供します。特定のインターフェイス アドレスを使用して接続を確立します。ただし、これが現在の標準ライブラリで可能かどうかはすぐにはわかりません。

まず、InterfaceByName("interface_name") を使用して、名前でネットワーク インターフェイスを取得できます。その後、インターフェイスの Addrs() メソッドを使用して、そのインターフェイスに関連付けられたアドレスのリストを取得できます。ただし、これらのアドレスは、ネットマスク付きの IP アドレスを表す *net.IPNet タイプです。

このアドレスをダイヤルに使用するには、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,
}

TCPAddr を取得したら、新しいダイヤラを作成するときにそれをローカル アドレスとして使用できます。

d := net.Dialer{LocalAddr: tcpAddr}

このダイヤラを使用すると、指定されたインターフェイス アドレスを使用して接続を確立できます。以下に例を示します。

_, err = d.Dial("tcp", "google.com:80")
if err != nil {
        log.Fatal(err)
}

これらの手順に従うと、Go で特定のインターフェイス アドレスを使用して接続を正常にダイヤルできます。

以上がGo で特定のインターフェイス アドレスを使用してネットワーク接続にダイヤルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。