使用boost asio库实现字节数可控的CS通信

来源:互联网 发布:渡边琢斗 知乎 编辑:程序博客网 时间:2024/06/04 23:24

使用boost asio库实现字节数可控的CS通信

2014年4月10日17:44:24

使用VS2008创建空的控制台程序。

服务器程序:

#include <iostream>#include <boost/asio.hpp>int main(int argc, char* argv[]){using namespace boost::asio;// 所有asio类都需要io_service对象io_service iosev;ip::tcp::acceptor acceptor(iosev,ip::tcp::endpoint(ip::tcp::v4(), 1000));for(;;){// socket对象ip::tcp::socket socket(iosev);// 等待直到客户端连接进来acceptor.accept(socket);// 显示连接进来的客户端std::cout << socket.remote_endpoint().address() << std::endl;// 向客户端发送hello world!boost::system::error_code ec;char * str = "hello world!";socket.write_some(buffer(str,7), ec);// 如果出错,打印出错信息if(ec){std::cout <<boost::system::system_error(ec).what() << std::endl;break;}// 与当前客户交互完成后循环继续等待下一客户连接}return 0;}
客户端程序:

#include <iostream>#include <boost/asio.hpp>#include <stdlib.h>int main(int argc, char* argv[]){using namespace boost::asio;// 所有asio类都需要io_service对象io_service iosev;// socket对象ip::tcp::socket socket(iosev);// 连接端点,这里使用了本机连接,可以修改IP地址测试远程连接ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"), 1000);// 连接服务器boost::system::error_code ec;socket.connect(ep,ec);system("PAUSE");// 如果出错,打印出错信息if(ec){std::cout << boost::system::system_error(ec).what() << std::endl;return -1;}// 接收数据char buf[100];size_t len=socket.read_some(buffer(buf,80), ec);std::cout<<"接收字节数:"<<len<<std::endl;std::cout.write(buf, len);system("PAUSE");return 0;}






0 0
原创粉丝点击