首先要加一个boost_system库
// setp 1: 创建一个 io_service实例
boost::asio::io_service svc;
// step 2: 创建一个 tcp::socket对象,现在还不能用于收发数据
tcp::socket sock(svc);
// step 3: 创建一个指向服务器的地址对象,用于 socket.connect()操作
tcp::endpoint addr(address::from_string(argv[1]),atoi(argv[2]));
boost::system::error_code ec;
// step 4: 主动发起到服务器端的连接,该操作如果成功执行,则sock对象可以用于收发数据
sock.connect(addr,ec);
if(ec)
{
cerr<<"sock.connect():An error occurred:"<<ec.message()<<'\n';
return -1;
}
while(getline(cin,msg))
{
if("quit"==msg)
break;
if(msg.empty())
continue; //继续下次循环
// step 5: 向服务器发送消息
boost::asio::write(sock,boost::asio::buffer(msg),boost::asio::transfer_all(),ec);
if(ec)
{
cerr<<"wrire(): An error occurred:"<<ec.message()<<'\n';
break;
}
// step 6: 从服务器接收消息
size_t len=sock.read_some(boost::asio::buffer(buf,sizeof buf-1),ec);
if(ec)
{
cerr<<"sock.read_some(): An error occurred:"<<ec.message()<<'\n';
break;
}
buf[len]='\0';
cout<<buf<<'\n'