我目前正在使用netty处理客户端 - 服务器应用程序,一些客户端在收到消息之前不会做任何事情。我已经读过api而无法找到办法。我的意思是我可以尝试在主要部分使用“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()”,这样程序就不会结束,处理程序仍然可以用于输入消息
答案 0 :(得分:0)
最简单的方法是替换:
in.readLine();
使用:
channel.closeFuture().await();
断开与服务器的连接后,客户端将终止。
您还需要花一些时间来定义客户端的生命周期,以便通道的状态不会影响应用程序何时运行以及何时运行。