Boost笔记--Asio--(1)简单的同步通信小示例

  看了一天的Boost.Asio库的资料,现在还是有点迷糊。对于Asio的学习还是要继续,同时在这里也记录下自己入手的第一个小例子。感觉先从小例子入手,然后再去理解那些原理概念啥的,要好一些。因为概念原理都太抽象了,有了小例子就知道是怎么个套路了。对于Asio库的在后面的学习中会陆续的写些文章来记录一些笔记。

(注:我不是专业的网络人士,有些东西可能我自己理解的很幼稚,没办法我连tcp/ip协议了解的很少。只能边学边去了解了。)

(1)服务器端代码

#include <iostream>
#include <boost/asio.hpp>

int main(int argc,char * argv[]){
    boost::asio::io_service service;
    boost::asio::ip::tcp::acceptor acceptor(service,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),5000));

    bool is_stop=false;
    while(!is_stop){
       boost::asio::ip::tcp::socket sock(service);
       acceptor.accept(sock);
       std::cout<<sock.remote_endpoint().address()<<std::endl;
       boost::system::error_code errcode;
       sock.write_some(boost::asio::buffer("hello world"),errcode);
       if(errcode){
           std::cout<<boost::system::system_error(errcode).what()<<std::endl;
           break;
       }
    }
    return 0;
}

(2)客户端的代码

#include <iostream>
#include <boost/asio.hpp>

int main(int argc,char * argv[]){
    boost::asio::io_service service;
    boost::asio::ip::tcp::acceptor acceptor(service,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),5000));

    bool is_stop=false;
    while(!is_stop){
       boost::asio::ip::tcp::socket sock(service);
       acceptor.accept(sock);
       std::cout<<sock.remote_endpoint().address()<<std::endl;
       boost::system::error_code errcode;
       sock.write_some(boost::asio::buffer("hello world"),errcode);
       if(errcode){
           std::cout<<boost::system::system_error(errcode).what()<<std::endl;
           break;
       }
    }
    return 0;
}

编译及运行结果:

时间: 2024-10-03 13:38:40

Boost笔记--Asio--(1)简单的同步通信小示例的相关文章

[Boost]用asio编写简单的socket通信程序

boost/asio库中封装了很多关于scoket的函数,当然,asio库还包含很多底层的库. 我们可以用socket编写一个基于UDP协议的黑框通讯程序. 要想使用asio里面的函数,大多都需要先创建一个io_service对象,然后通过这个serveice来构造不同的对象,所以第一步,我们得创建两个对象: boost::asio::io_service io_service; boost::asio::ip::udp::socket udp_socket(io_service); 这里唯一需

Android编程权威指南-读书笔记(二)-第一个小程序

Android编程权威指南-读书笔记(二) -第一个小程序 第一个例子介绍 应用名为GeoQuiz.用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 这个例子为我们简单介绍了几个基本组件的使用,以及基本的事件监听.让我们对基本组件的使用和事件的监听有一个基本的了解. 这篇文章分为2个部分,第一部分就是创建简单的UI.第二个部分就是对这个UI增加代码来响应一些操作. (注:所有不明白或者不理解的东西其实都不重要,后面都会有更详细的介绍.) 本章的目标

简单的购物车小程序

1 # -*- coding:utf-8 -*- #简单的购物车小程序 author:李学松 2 shopping_cart =[] 3 product_list_tatol = "---product list----" 4 welcome = "-----------welcome to shopping marketi----------" 5 product_list = [ 6 ('iphone',5800), 7 ('lenovo',900), 8 ('

非常简单的终端小时钟

python 未入门,练练手,锻炼一下智力.只适合跟我一样的菜鸟 #coding = utf-8 import time import sys count = 0 m = 0 mm = 0 h = 0 hh =0 while True: for i in range(0,11): if i 非常简单的终端小时钟

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

c语言:简单飞机射击小游戏

c语言:简单飞机射击小游戏 使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,操作方法是"a""d""w"或者"←""↑""→"来控制攻击.左.右,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会,机会用光则游戏结束,之后可选择是否重新开始游戏. 改进:增加了颜色函数,使得游戏看起来更加的舒适:增加了终止函数,使游戏在死亡三次后自动结束游戏,并且可以选择是否重新开始游戏:

boost中asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全。

1.实现多线程方法: 其实就是多个线程同时调用io_service::run for (int i = 0; i != m_nThreads; ++i)        {            boost::shared_ptr<boost::thread> pTh(new boost::thread(                boost::bind(&boost::asio::io_service::run,&m_ioService)));            m_l

一个简单的数学小魔术

在一张纸上并排画 11 个小方格.叫你的好朋友背对着你(确保你看不到他在纸上写什么),在前两个方格中随便填两个 1 到 10 之间的数.从第三个方格开始,在每个方格里填入前两个方格里的数之和.让你的朋友一直算出第 10 个方格里的数.假如你的朋友一开始填入方格的数是 7 和 3 ,那么前 10 个方格里的数应该是 7 3 10 13 23 36 59 95 154 249 现在,叫你的朋友报出第 10 个方格里的数,你只需要在计算器上按几个键,便能说出第 11 个方格里的数应该是多少.你的朋友会