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