0

ppp0 ~ ppp4 であるサーバー上でいくつかの vpn をバインドしました。ここで問題が発生します。それぞれ異なるネットワーク インターフェイスを使用して 5 つの進行を開始したいと考えています。
proc0 -> ppp0
proc1 -> ppp1
proc2 -> ppp2
proc3 -> ppp3
proc4 -> ppp4
これを C 言語で行う方法を説明します。しかし、golangのネットパッケージでこれを行う方法は?

4

2 に答える 2

1

net.Interfaces()おそらく、システムのネットワーク インターフェイスを表すスライスを取得したいでしょうnet.Interface()。または、インターフェイス名を知っているnet.InterfaceByName()ので、特定の を取得するために使用できますnet.Interface

ppp0, err := net.InterfaceByName("ppp0")

Interface.Addrs()その後、返されたを呼び出してnet.Interface、インターフェイスの IP アドレスを取得できます。

addrs, err := ppp0.Addrs()

その後、コードの残りの部分で目的のアドレスを使用できます (おそらくnet.ListenIPまたはnet.DialIP.

addr, err := net.ResolveIPAddr("ip4", addrs[0])
// check err
conn, err := net.ListenIP("ip4:pptp", addr)
// check err, then do stuff with conn

これを複数のインターフェースに対して同時に行うことに関しては、リスナー/インターフェースごとにゴルーチンを起動し、チャネルを介してトラフィックを移動できますが、これは実際に何をしたいかによって異なります。(データのログ、データの送信、データの変更などだけですか?)

于 2015-01-22T05:06:40.587 に答える