同步TCP通信服务端

#include <boost/asio.hpp>
#include <iostream>
using namespace boost::asio;
int main()
{try{io_service io;ip::tcp::endpoint ep(ip::tcp::v4(), 6688);ip::tcp::acceptor acceptor(io, ep);while (1){ip::tcp::socket sock(io);acceptor.accept(sock);std::cout << "client:" << sock.remote_endpoint().address() << std::endl;sock.write_some(buffer("hello asio"));}}catch (std::exception& e){std::cout << e.what() << std::endl;}return 0;
}

View Code

同步Tcp通信客户端

#include <boost/asio.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace boost::asio;
int main()
{try{io_service io;ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 6688);ip::tcp::socket sock(io);sock.connect(ep);char str[1024];sock.read_some(buffer(str));std::cout << "receive from" << sock.remote_endpoint().address() << std::endl;;std::cout << str << std::endl;}catch (std::exception& e){std::cout << e.what() << std::endl;}getchar();return 0;
}

View Code

// BoostTcpServer.cpp : 定义控制台应用程序的入口点。
// 

#include "stdafx.h"
#include "boost/asio.hpp"
#include "boost/thread.hpp" using namespace std;
using namespace boost::asio; #ifdef _MSC_VER
#define _WIN32_WINNT  0X0501 //避免VC下编译警告
#endif #define PORT 1000
#define IPV6
//#define IPV4 

int _tmain(int argc, _TCHAR* argv[])
{ // 所有asio类都需要io_service对象
  io_service iosev; //创建用于接收客户端连接的acceptor对象
#ifdef IPV4 ip::tcp::acceptor acceptor(iosev,ip::tcp::endpoint(ip::tcp::v4(), PORT));
#endif #ifdef IPV6 ip::tcp::acceptor acceptor(iosev,ip::tcp::endpoint(ip::tcp::v6(), PORT));
#endif while (true) { // socket对象
    ip::tcp::socket socket(iosev); // 等待直到客户端连接进来
    acceptor.accept(socket); // 显示连接进来的客户端 std::cout <<"remote ip:"<<socket.remote_endpoint().address()<<endl; std::cout <<"remote port:"<<socket.remote_endpoint().port() << std::endl; char buf[2048]; boost::system::error_code ec; while(1) { socket.read_some(buffer(buf),ec); if (ec) { std::cout <<boost::system::system_error(ec).what() << std::endl; break ; } std::cout<<"recv msg:"<<buf<<endl; if(strcmp(buf,"bye")==0)//收到结束消息结束客户端连接
      { break; } socket.write_some(buffer("I heared you!\n"),ec); if (ec) { std::cout <<boost::system::system_error(ec).what() << std::endl; break ; } } socket.close(); // 与当前客户交互完成后循环继续等待下一客户连接
  } return 0;
} 

View Code

#include "stdafx.h"
#include "boost/asio.hpp" using namespace boost::asio; #ifdef _MSC_VER
#define _WIN32_WINNT  0X0501 //避免VC下编译警告
#endif #define PORT 1000
#define IPV6
//#define IPV4 

int _tmain(int argc, _TCHAR* argv[])
{ // 所有asio类都需要io_service对象
  io_service iosev; // socket对象
  ip::tcp::socket socket(iosev); // 连接端点,这里使用了本机连接,可以修改IP地址测试远程连接
#ifdef IPV4 ip::address_v4 address=ip::address_v4::from_string("127.0.0.1");
#endif #ifdef IPV6 //"0:0:0:0:0:0:0:1"为IPV6的本机回环地址,类似于"127.0.0.1" ip::address_v6 address=ip::address_v6::from_string("0:0:0:0:0:0:0:1");
#endif ip::tcp::endpoint ep(address, PORT); // 连接服务器
  boost::system::error_code ec; socket.connect(ep,ec); // 如果出错,打印出错信息 if (ec) { std::cout << boost::system::system_error(ec).what() << std::endl; return -1; } //循环发送和接收数据 for(int i=0;i<5;++i) { //发送数据 socket.write_some(buffer("hello"), ec); // 接收数据 char buf[100]; size_t len=socket.read_some(buffer(buf), ec); std::cout.write(buf, len); Sleep(500); } //发送与服务端约定好的结束语,由服务端断链 socket.write_some(buffer("bye"), ec); getchar(); return 0;
} 

View Code

转载于:https://www.cnblogs.com/osbreak/p/9206278.html

boost::asio::tcp相关推荐

  1. boost::asio::ip::tcp::resolver::query定义不正确导致boost::asio::ip::tcp::resolver的resolve抛出异常...

    boost::asio::ip::tcp::resolver::query一般的使用形式为boost::asio::ip::tcp::resolver::query query("地址&qu ...

  2. boost asio 异步实现tcp通讯

    一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常 ...

  3. boost::asio::ip::tcp实现阻塞tcp echo客户端的程序

    boost::asio::ip::tcp实现阻塞tcp echo客户端的程序 实现功能 C++实现代码 实现功能 boost::asio::ip::tcp实现阻塞tcp echo客户端的程序 C++实 ...

  4. boost::asio::ip::tcp用法的测试程序

    boost::asio::ip::tcp用法的测试程序 实现功能 C++实现代码 实现功能 boost::asio::ip::tcp用法的测试程序 C++实现代码 #include <cstdl ...

  5. Boost:基于boost::asio的延迟tcp服务器测试程序

    Boost:基于boost::asio的延迟tcp服务器测试程序 实现功能 C++实现代码 客户端源码 服务端源码 实现功能 boost::asio模块,基于boost::asio的延迟tcp服务器测 ...

  6. boost.asio异步并发Tcp服务器

    简介 boost的asio采用的是Proactor模型,该模型的核心思想就是异步IO,IO在事件循环中,每个异步IO都绑定对应的回调函数,当IO完成后,对应的回调函数会在事件循环中执行. 异步并发模型 ...

  7. boost::asio编程-同步TCP

    boost.asio库是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. boost.asio库支持TCP.UDP.ICMP通信协议. 下面介绍同步TCP模式: ...

  8. c++语言 tcp例子,C++ boost::asio编程-同步TCP详解及实例代码

    boost::asio编程-同步TCP boost.asio库是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. boost.asio库支持TCP.UDP.IC ...

  9. boost asio 文件服务器,使用boost ASIO库封装TCP服务器类

    使用异步TCP方式,可在此基础上增加更多功能. 头文件AsioTcp.h: #pragma once #include #include #include typedef boost::asio::i ...

最新文章

  1. externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目
  2. MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)
  3. lt;a href=quot;javascript:history.back();quot;gt;返回上一页lt;/agt;
  4. 学到了!程序员大神用这招让开发效率直接提升10倍!!
  5. Java 设计模式 代理模式
  6. SpringBoot内嵌tomcat日志配置
  7. 浙江省大学计算机一级考试试题,大学生计算机一级考试试题
  8. 如何生成微信小程序二维码(uniapp开发)
  9. X86服务器及“机架、塔式、刀片”三类服务器分类
  10. 2021.07.29 Oracle学习笔记 2
  11. HTML-零基础入门
  12. Vue 中使用 watch 方法实时获取路由信息
  13. 涛思数据库(二)——上手使用
  14. 即时聊天工具混战中国
  15. 如何调节B站倍速播放
  16. ICC图文流程——(三)布局Placement
  17. LSB顺序+随机隐写和提取(matlab)
  18. 5月6日地图下载。同学们要练习!
  19. 申请澳洲八大,IB成绩多高才有胜算?
  20. 需求调研(一)——调研流程和时间的把握

热门文章

  1. 苹果删除照片不释放内存_手机内存不足又卡顿,别瞎清理,删除这些文件夹,轻松释放几个G!...
  2. 快手公会入驻需要什么条件?
  3. vue单文件props写法_详解Vue 单文件组件的三种写法
  4. Word中的TIF图像保存后再打开就模糊了
  5. 白噪声检验python_python 加一个白噪声跟老齐学Python之Python安装
  6. Flink On K8s
  7. 【每日一读】Large Scale Network Embedding: A Separable Approach
  8. 【Laravel笔记】12. 模型的预加载
  9. STM32F4的DMA
  10. python、matplotlib画箱体图检验异常值