当前搜索:

boost库在工作(35)网络服务端之五

在前面的例子里,只是处理每个连接发来的消息,然后再把消息转回自己的那里,跟别的连接没有什么关联,这种情况只会适应一种像HTTP的那样,只关心自己的东西。但在网络服务器里,最多的是跟别人有关联的服务。比如说聊天室,就是不断地把所有进入这个聊天室的人的消息向所有人广播出去,也就是每个进来的连接,把连接所有收到的内容,再向所有连接发送出去。又如在网络游戏的服务器里,当每个地图里走动的人,都要向所有可视范...
阅读(2495) 评论(0)

boost库在工作(34)网络服务端之四

现在来仔细地分析类CConnect,它主要作用就是管理一个连接的事务,比如数据接收和发送。因此类CConnect一定要有一个网络socket成员,它就是使用boost::asio::ip::tcp::socket类,这个类主要实现异步或同步的方式接收数据网络数据。在这个例子里,调用boost::asio::ip::tcp::socket类的async_read_some函数来进行异步读取数据,所谓...
阅读(3409) 评论(0)

boost库在工作(33)网络服务端之三

在这个例子里,表示服务器与一个客户端的沟通渠道,就是一个连接,封装为类CConnect。它是当服务器接收到一个客户端连接请求之后创建的,主要用来就是管理这个连接的生命周期,以及数据的接收和发送。从生命周期上来说,当一个连接创建时就旦生了,那什么时候死亡呢?在这个类的设计上是非常优秀,非常巧妙的,因为它不会为多生存一点时间而存在,也不会提前死掉而导致非法的内存访问。有这样的特性,主要是得益于它继承类...
阅读(2929) 评论(0)

boost库在工作(32)网络服务端之二

在这个例子里,服务器对象主要使用boost::asio::io_service对象,这个对象主要用来构造异步接收数据使用,接着定义boost::asio::ip::tcp::acceptor对象,这个对象主要用来接收所有连接进来到服务器的连接,也就是起到监听的作用。在服务器类的构造函数里主要调用接受对象的async_accept方法发起监听连接的作用,就是等着客户端连接过来,如果不发起连接,是收不...
阅读(3044) 评论(0)
    个人资料
    • 访问:5898477次
    • 积分:76234
    • 等级:
    • 排名:第22名
    • 原创:1624篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2102条
    文章存档