こんにちは私は 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 つのブートストラップ ?