zoukankan      html  css  js  c++  java
  • Linux组件封装(九)——EchoLib的一些简单综合

    在前面,我们封装好了线程池与Socket的相关组件,接下来我们实现几个将简单的实例。

    首先,我们可以将用户实现的回调函数封装到class中直接绑定,这样,简洁的main函数中,我们只需传递相应的IP与port,然后启动服务器即可。

    然后,我们可以实现一个群聊的小程序,我们需要将连接的客户端保存好,然后遍历所有连接的客户端,只有发送信息的人与客户端不同时才发送信息,同时,我们还需要控制客户端的数量。

    最后,我们实现一个单词查询功能,当我们输入一个单词时,会到相应的文件中查询该单词出现的次数并且打印所有该单词出现的那一行句子。

      1) 首先,我们需要封装这个单词查询的类,使用vector保存文件中的每一行单词,然后使用map,将不同的单词设置为key,每个key对应一个set集合,这个set集合中保存了出现该单词的所有行号,然后我们根据行号,打印出vector中对应的string。

      2) 当文件过大时,我们需要查询的量就比较大,所以,我们将线程池启动,分别去查询单词以提高效率。

      3) 在初始化时,我们首先要启动线程池,创建好线程。然后我们设置相应的回调函数,当只是客户端连接时,我们发送欢迎消息,当客户端发出要查询的单词时,我们先接收单词,然后给线程池分配任务,将类中的执行函数绑定为void()形式的函数。

    总结:

      在线程池与网络编程的封装过程中,较复杂的东西不是很多,但基本思路还是比较难以理解的,尤其是涉及到函数绑定与回调函数,需要多加琢磨。

      不过大体思路寒酸清晰,从大体思路出发,逐步去研究每个模块,最后再仔细分析一些难懂的代码,这样掌握EchoLib会较快,同时理解的也会更加透彻。

    关于EchoLib的整体代码(包括线程池、Socket和实例等),可以到我的github上去查看:

      https://github.com/gjn135120/My_EchoLib

  • 相关阅读:
    postgresql 排序索引
    postgresql 外键约束是否自动索引,unique约束是否自动建索引,主键是否自动建索引
    nginx缓存失效--vim选择后u将所有大小转换为了小写
    linux内核参数调优
    如何让自己的网站在搜索引擎中出现
    linux 查看系统版本
    nginx 模板
    深浅拷贝2
    字典 综合逻辑
    字典 dict
  • 原文地址:https://www.cnblogs.com/gjn135120/p/4046924.html
Copyright © 2011-2022 走看看