TCP客户端

我们还需要另一端用于通信,即一个请求服务器的客户端。基本结构与我们为服务器所做的相同。

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

using namespace boost::asio;
using ip::tcp;
using std::string;
using std::cout;
using std::endl;

这些导入与我们为服务器所做的相同。没有什么新的。

int main() {
     boost::asio::io_service io_service;
//创建socket
     tcp::socket socket(io_service);
//连接
     socket.connect( tcp::endpoint( boost::asio::ip::address::from_string("127.0.0.1"), 1234 ));
// 客户端请求/消息
     const string msg = "Hello from Client!\n";
     boost::system::error_code error;
     boost::asio::write( socket, boost::asio::buffer(msg), error );
     if( !error ) {
        cout << "客户端发送了hello消息!" << endl;
     }
     else {
        cout << "发送失败: " << error.message() << endl;
     }
 // 从服务器获取响应
    boost::asio::streambuf receive_buffer;
    boost::asio::read(socket, receive_buffer, boost::asio::transfer_all(), error);
    if( error && error != boost::asio::error::eof ) {
        cout << "接收失败: " << error.message() << endl;
    }
    else {
        const char* data = boost::asio::buffer_cast<const char*>(receive_buffer.data());
        cout << data << endl;
    }
    return 0;
}

我们再次通过创建io_service对象和创建socket开始。我们需要使用localhost(IP 127.0.0.1)连接到服务器,并指定与服务器相同的端口,以成功建立连接。一旦连接建立,我们使用boost::asio::write发送一个hello消息到服务器。如果消息传输成功,服务器将发送响应。为此,我们有boost::asio::read函数来读取响应。现在让我们运行我们的程序,看看实际情况。

通过执行以下命令编译和运行服务器

$ g++ server.cpp -o server –lboost_system
$ ./server

移至另一个终端窗口以运行客户端。

$ g++ client.cpp -o client –lboost_system
$ ./client   

观察上面输出的工作流程。客户端通过向服务器打招呼发送其请求,然后服务器以回复打招呼。数据传输完成后,连接关闭。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knowledgebase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值