2

こんにちは私は netty 4 を使用し、別の送信元アドレスから UDP dgram を送信します。まず、Bootstrap を単一のポート bind(0) にバインドし、異なる送信者でデータグラムを送信してみます。各送信者は、インターフェイスの 1 つの送信元 IP (eth0: 0、eth0:1、...)。機能しませんでした。常に同じインターフェイスから送信していました。バグかどうかはわかりませんが、データグラムの送信者フィールドは、recv() で送信者を知るためだけに使用され、send() でソースを修正するためには使用されない可能性があります。

次に、使用したいすべてのインターフェイスにブートストラップを複数回バインドしてみます。

foreach (ifaces as iface){
  channels.add(client.bind(iface).sync().channel());
}

しかし、それは例外を引き起こしました。同じブートストラップで bind 複数回呼び出すことは不可能ですか?

そのため、次のようなインターフェイスごとに 1 つのブートストラップを作成することで、最終的に成功しました。

foreach (ifaces as iface){
  client = new Bootstrap().group(reuseThePool).
     channel(NioDatagramChannel.class).handler(new Handler(this));
  channels.add(client.bind(iface).sync().channel());
}

そしてそれはうまくいきますが、それは行くべき道ですか?bind() ごとに 1 つのブートストラップ ?

4

0 に答える 0