Netty 4.0.0 バイナリを使用して、UDP チャネル経由でオブジェクト (Pojo) をブロードキャストする必要があります。
Netty 4.0.0 では、DatagramPacket クラスのみを使用して UDP パケットを送信できます。
このクラスは、引数として ByteBuf のみを受け入れます。
他に UDP チャネル経由で Pojo を送信する方法はありますか?
さらに明確にするために、次のようにしていました。
UDP チャネルの設定を初期化しています
ConnectionlessBootstrap udpBootstrap;
udpBootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
new ObjectEncoder(),
new ObjectDecoder(new NettyElementInfo()),
new UDPBroadcastHandler());
}
});
udpBootstrap.setOption("broadcast", true);
//datagramChannel = (DatagramChannel) udpBootstrap.bind(new InetSocketAddress(udp_port));
datagramChannel = (DatagramChannel) udpBootstrap.bind(new InetSocketAddress(0));
ここで、NettyElementInfo は Serializable および ClassResolver インターフェイスを実装します。この pojo を次のようにブロードキャストしようとしました。
channel.write(new NettyElementInfo(),
new InetSocketAddress("255.255.255.255", 9555));
受信側では、初期化部分について上記と同じことを行っていましたが、ハンドラーでは次のように Pojo を取得していました。
NettyElementInfo elementInfo = (NettyElementInfo)e.getMessage();
これは netty 3.5.x を使用して正常に実行されました
Netty 4.0.0 を使用してこのシナリオを再現する方法。サンプルコードを提供してください。