我目前正在使用netty开发客户端-服务器应用程序,有些客户端在收到消息之前不会做任何事情。我已经阅读了api,但找不到这样做的方法。我的意思是,我可以尝试在main上使用"in.readline()",这样它就不会结束,但感觉不对。也可能有无尽的循环,但我认为这也不是正确的方式。
这里的问题是:有没有一种方法可以像服务器的主方法结束一样为传入消息绑定套接字?
public void run(){
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap bootstrap = new Bootstrap()
.group(group)
.channel(NioSocketChannel.class)
.handler(new ChatClientInitializer());
Channel channel = bootstrap.connect(host,port).sync().channel();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Inserte su nombre");
String nombre = in.readLine();
MyClientChannel canal = new MyClientChannel(channel,nombre);
canal.write("SM",nombre);
in.readLine();
看到最后我不得不写"in.readline()",这样程序就不会结束,处理程序仍将用于插入消息
最简单的方法是替换:
in.readLine();
带有:
channel.closeFuture().await();
断开与服务器的连接后,客户端将终止。
您还需要花一些时间来定义客户端的生命周期,这样通道的状态就不会影响应用程序何时运行以及何时不运行。