「エフェメラル」に依存するのではなく、DefaultLocalServerChannelFactory で作成された LocalChannel サーバーに接続するときに、明示的なローカル アドレスを指定できるようにしたいと考えています。
(これの理由は、複数の接続を作成し、サーバーにリモート アドレスを使用して関連する接続をグループ化できるようにしたいからです)。
提供された LocalExample クラスを変更すると、次のようになります。
ChannelFuture channelFuture = cb.connect(socketAddress);
に:
ChannelFuture channelFuture = cb.connect(socketAddress, new LocalAddress("C1"));
チャネルが最初に ClientBootstrap によってバインドされ、次に接続時に常にチャネルをバインドする LocalClientChannelSink によって再度バインドされるため、チャネル例外 (既にバインドされている) がスローされます。
bind(channel, succeededFuture(channel), new LocalAddress(LocalAddress.EPHEMERAL));
例外を無視すると、すべてが機能しているように見え、チャネルのエンドポイントにはデフォルト以外のローカル アドレスがあります。
ただし、可能であれば例外を回避する方法を見つけたいと思います