我需要使客户端能够进行很多连接.我使用Netty 4.0.不幸的是,所有现有的示例都不显示如何创建大量的连接.
public class TelnetClient {
    private Bootstrap b;
    public TelnetClient() {
        b = new Bootstrap();
    }
    public void connect(String host,int port) throws Exception {
        try {
            b.group(new NioEventLoopGroup()).channel(NioSocketChannel.class).remoteAddress(host,port).handler(new TelnetClientinitializer());
            Channel ch = b.connect().sync().channel();
            ChannelFuture lastWriteFuture = null;
            BufferedReader in = new BufferedReader(new InputStreamReader(system.in));
            for (;;) {
                String line = in.readLine();
                if (line == null) break;
                lastWriteFuture = ch.write(line + "\r\n");
                if (line.toLowerCase().equals("bye")) {
                    ch.closeFuture().sync();
                    break;
                }
            }
            if (lastWriteFuture != null) lastWriteFuture.sync();
        } finally {
            b.shutdown();
        }
    }
    public static void main(String[] args) throws Exception {
        TelnetClient tc = new TelnetClient();
        tc.connect("127.0.0.1",1048);
        tc.connect("192.168.1.123",1050);
    //...
    }
}

这是正确的决定吗?还是可以更好?

解决方法

是的,它几乎是正确的..你唯一需要改变的是每个连接上创建NioEventLoopGroup.

NioEventLoopGroup实例是昂贵的,所以它们应该被共享.创建一个实例并共享它,每次通过相同的实例到Bootstrap.group(…).

java – Netty 4多客户端的更多相关文章

  1. ios – React native error – react-native-xcode.sh:line 45:react-native:command not found命令/ bin/sh失败,退出代码127

    尝试构建任何(新的或旧的)项目时出现此错误.我的节点是版本4.2.1,react-native是版本0.1.7.我看过其他有相同问题的人,所以我已经更新了本机的最新版本,但是我仍然无法通过xcode构建任何项目.解决方法要解决此问题,请使用以下步骤:>使用节点版本v4.2.1>cd进入[你的应用]/node_modules/react-native/packager>$sh./packager.s

  2. ios – Netty Channel关闭检测

    我正在使用netty和ios构建服务器客户端应用程序,当用户在他/她的ios设备上关闭WiFi时,我遇到问题,netty服务器不了解它.服务器需要知道为该用户进行清理并将其设置为离线状态,但是当用户再次尝试连接时,服务器只是告诉他他/她已经在线.解决方法如果我正确地理解了您的问题:您想要监听服务器端的客户端通道关闭事件,并进行一些会话清理,在Netty有两种方式来收听频道封闭事件:1)如果您的服务

  3. xcode – XCTest一个元组

    我正在尝试构建一个单元测试:但是Xcode给了我一个错误:无法使用类型的参数列表调用’XCTAssertEqual’是否有不同的方法来测试元组而不提取其成员并单独测试?解决方法XCTAssertEqual要求传递给它的两个参数是Equatable,您可以从方法签名中看到它们.注意,expression1返回T?,T必须是Equatable:但是Swifttuplesaren’tEquatable,所以你不能将它们与XCTAssertEqual一起使用.元组确实有一个==方法–它们只是不符合协议–所以你可以

  4. swift中方便调试的日志输出

    ///输出日志//////-parametermessage:日志消息///-parameterlogError:错误标记,默认是false,如果是true,发布时仍然会输出///-parameterfile:文件名///-parametermethod:方法名///-parameterline:代码行数funcprintLog{iflogError{print}else{#ifDEBUGprint#endif}}2.当发布的时候,如图讲-DDEBUG删除就可以了

  5. Swift中的打印日志的配置

    Swift中的打印日志的配置

  6. Swift日志打印

    publicfuncBMLog(message:T,file:String=FILE,method:String=FUNCTION,line:Int=LINE){#ifDEBUGprint(“((fileasNsstring).lastPathComponent)[line:(line)],(method):(message)”)#endif}

  7. Swift 下调试小技巧(备忘)iOS

    自定义log你是否经常出现print一大堆不知道那个是哪个?

  8. 将可选类型转换为错误抛出

    作者:EricaSadun,原文链接,原文日期:2016-10-07译者:wiilen;校对:Cee;定稿:CMBSoroushKhanlou曾写道:「很多时候我希望可选类型并不存在,“结果”就只是“结果”」。为延迟计算保留autoclosure。将全局函数放入类型中,使之称为静态成员。嵌套的错误声明。错误应能给你更多提示,而不是只显示一个名字。在声明了多行的复杂构造器之后使用Allman风格。

  9. NSLog有一个Swift替代(@“%s”,__PRETTY_FUNCTION__)

    虽然Swift不支持宏(我想),我仍然想使用一个通用的日志语句,包括被调用的函数的名称。__LINE__–Int–出现它的行号。__COLUMN__–Int–它开始的列号。__FUNCTION__–String–声明的名称。

  10. Swift中的宏?

    Swift目前是否支持宏,或者有未来计划要添加支持吗?在这种情况下,应为“宏”参数添加默认值。Swift2.2及更高版本Swift2.1和更低版本这是fatalError和assert函数做的。除了在另一个答案中已经提到的条件编译,没有其他宏。

随机推荐

  1. java – Netty增加ChannelBuffer大小

    您好我有一个NettyServer,其处理程序应该接受字符串.它似乎只接收最多1024个字节的内容.如何增加缓冲区大小.我已经尝试过了没有成功.处理程序如下}解决方法你在使用UDP吗?

  2. java – 使用SPDY和Netty

    此外,当服务器不支持SPDY并且通道回退到标准SSL连接时,该功能如何?

  3. java – Linux机器上Netty 4.1的性能调优

    我正在使用Netty4.1Beta3构建一个消息传递应用程序来设计我的服务器,并且服务器理解MQTT协议.这是我的MqttServer.java类,它设置Netty服务器并将其绑定到特定端口.现在,我在Mac上对我的应用程序进行了负载测试,具有以下配置网络性能非常出色.在执行我的代码时我查看了jstack,发现nettyNIO产生了大约19个线程,并且它们似乎都没有等待等待通道或其他东西.然后我在

  4. 如何使用Java netty正确限制带宽使用?

    在此先感谢您的帮助!

  5. java – Netty 4多客户端

    我需要使客户端能够进行很多连接.我使用Netty4.0.不幸的是,所有现有的示例都不显示如何创建大量的连接.这是正确的决定吗?

  6. 如果JVM GC仍然存在,为什么需要手动处理Netty ByteBuf的引用计数?

    根据NettyinActionv10的说法,引用计数用于处理ByteBuf的汇总.但是JVM不知道netty引用计数,所以JVM仍然可以使用ByteBuf.如果是这样,为什么还需要关心引用计数和手动调用release()方法?

返回
顶部