基于在UDP通信的相同原因,我们将原始的boost::asio示例进行修改,以保证能够在自己的PC上能够运行:
1. TCP同步客户端
#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
int main(int argc, char* argv[])
{
try
{
boost::asio::io_context io_context;
tcp::endpoint receiver_endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 60013);
// 创建一个未打开的socket
tcp::socket socket(io_context);
// 连接到服务器(tcp三次握手),当完成时,socket将自动打开
socket.connect(receiver_endpoint);
for (;;)
{
boost::array<char, 128> buf;
boost::system::error_code error;
size_t len = socket.read_some(boost::asio::buffer(buf), error);
if (error == boost::asio::error::eof)
break; // Connection closed cleanly by peer.
else if (error)
throw boost::system::system_error(error); // Some other error.
std::cout.write(buf.data(), len);
}
}
c