【问题标题】:Netty client acting as a service充当服务的 Netty 客户端
【发布时间】:2014-01-09 22:58:55
【问题描述】:

我目前正在使用 netty 开发一个客户端-服务器应用程序,一些客户端在收到消息之前不会做任何事情。我已经阅读了 api,但找不到这样做的方法。我的意思是我可以尝试在 main 上使用“in.readline()”,这样它就不会结束,但感觉不对。也可能有无限循环,但我认为这也不是正确的方法。

这里的问题是:有没有办法为传入消息绑定套接字,就像服务器以 main 方法结尾一样?

    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()”,这样程序就不会结束,处理程序仍然可以接收传入的消息

【问题讨论】:

  • 请尝试重新表述问题并提交示例代码。恐怕你的问题不是很清楚。
  • @42 完成,谢谢 :)

标签: network-programming netty


【解决方案1】:

最简单的方法是替换:

in.readLine();

与:

channel.closeFuture().await();

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

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

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多