boost::asio,boost asio库教程
C 03:使用助推-用澳洲安全情报局实现简易回声服务器
C 03:使用助推-用澳洲安全情报局实现简易回声服务器
2009-10-29 11:27
一、编写代码注:以下代码取自升压1.40的示例代码:
//
//异步_tcp_echo_server.cpp
//~~~~~~~~~~~~~~~~~~~~~~~~~
//版权所有2003-2008年克里斯托弗m科尔霍夫
//根据促进软件许可证1.0版分发。(参见随附的
//文件许可证_1_0.txt或在http://www.boost.org/LICENSE_1_0.txt复制)
#包含标准库函数
#包括输入输出流
#包含升压/绑定. hpp
#包含boost/asio.hpp
使用boost:asio:IP:TCP;
课堂会话{
公共:
会话(boost:asio:io _ service io _ service):
socket_(io_service) {
tcp:socket socket() {
返回套接字_;
void start() {
套接字_ .async _ read _ some(boost:asio:buffer(data _,max_length),
boost:bind(session:handle _ read,this,
boost:asio:占位符:错误,
boost:asio:占位符* bytes _ transferred));
void handle _ read(常量boost:system:error _ code错误,
size _ t bytes _ transfered){
如果(!错误){
boost:asio:async _ write(socket _,boost:asio:buffer(data_,
bytes _ transferred)、boost:bind(session:handle _ write,
this,boost:asio:placeholders:error));
}否则{
删除这个;
void handle _ write(常量boost:system:error _ code错误){
如果(!错误){
套接字_ .async _ read _ some(boost:asio:buffer(data _,max_length),
boost:bind(session:handle _ read,this,
boost:asio:占位符:错误,
boost:asio:占位符* bytes _ transferred));
}否则{
删除这个;
私人:
TCP:socket socket _;
枚举{
最大长度=1024
char data _[max _ length];
类别服务器{
公共:
服务器(boost:asio:io _ service io _ service,短端口) :
io_service_(io_service),acceptor_(io_service,tcp:endpoint(tcp:v4(),
port)) {
会话*新会话=新会话(io _ service _);
接受者_。async _ accept(new _ session-socket(),boost:bind(
server:handle_accept,this,new_session,
boost:asio:占位符:错误));
void句柄_接受(会话*新建_会话,
const boost:系统:错误代码错误){
如果(!错误){
new_session- start()。
新会话=新会话(io _ service _);
接受者_。async _ accept(new _ session-socket(),boost:bind(
server:handle_accept,this,new_session,
boost:asio:占位符:错误));
}否则{
删除新会话;
私人:
boost:asio:io _ service io _ service _;
TCP:acceptor acceptor _;
int main(int argc,char* argv[]) {
尝试{
如果(argc!=2) {
标准:cerr 用法:异步传输控制协议回应服务器端口
返回1;
boost:asio:io _ service io _ service;
使用命名空间标准
//为了阿托伊.
服务器s(io_service,atoi(argv[1]);
io _ service。run();
} catch (std:exception e) {
"标准:证书"异常:" e . what()" n ";
返回0;
}二、编译代码$ g-G3-Wall-o async _ TCP _ echo _ server async _ TCP _ echo _ server。CPP-lboost _ system注意:boost.asio库依赖升压_系统
三、运行async_tcp_echo_server$ ./async _ TCP _ echo _ server 8868 # 8868是异步传输控制协议回应服务器监听的端口号四、用远程登录命令作为客户端测试新开启一个终端,注意:同样要登录到Linux操作系统操作系统实验室,执行:telnet本地主机8868
$ telnet本地主机8868
正在尝试:1.
正在尝试127.0.0.1.
已连接到本地主机。
逃跑的角色是^].
第一行#这是我们的输入
第一行#这是服务器异步传输控制协议回应服务器的回应,以下类推
第二行
第二行
欢迎来到xuanyuan-soft.org.cn!
欢迎来到xuanyuan-soft.org.cn!五、关于促进更多的信息请访问促进的主页:http://www.boost.org/