Netty客户端充当服务

时间:2013-12-16 13:28:44

标签: network-programming netty

我目前正在使用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()”,这样程序就不会结束,处理程序仍然可以用于输入消息

1 个答案:

答案 0 :(得分:0)

最简单的方法是替换:

in.readLine();

使用:

channel.closeFuture().await();

断开与服务器的连接后,客户端将终止。

您还需要花一些时间来定义客户端的生命周期,以便通道的状态不会影响应用程序何时运行以及何时运行。