Как мне в netty отправить объект с помощью MessageToByteEncoder? Если можно приведите пример кода Эхо сервера то есть мы получаем объект и отслыаем обратно.
Ответ
Пример с ObjectEncoder, наследником MessageToByteEncoder
Person.java
public class Person implements Serializable {
private final Long id;
private String name;
public Person(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return getName();
}
}
SimpleClient.java
public class SimpleClient {
public static void main(String[] args) throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
new Bootstrap().group(group)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
Person person = (Person) msg;
System.out.println(person);
}
});
}
})
.connect("localhost", 1234)
.sync()
.channel()
.closeFuture()
.sync();
} finally {
group.shutdownGracefully();
}
}
}
SimpleServer.java
public class SimpleServer {
public static void main(String[] args) throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
new ServerBootstrap().group(group)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer
person.setName("John Doe");
ctx.writeAndFlush(person)
.addListener(ChannelFutureListener.CLOSE);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
cause.printStackTrace();
ctx.channel().close();
}
});
}
})
.bind("localhost", 1234)
.sync()
.channel()
.closeFuture()
.syncUninterruptibly();
} finally {
group.shutdownGracefully();
}
}
}
Комментариев нет:
Отправить комментарий