C++ 基本Boost::asio TCP客户端
我正在尝试创建基本的异步TCP客户机,它输出它接收到的任何内容。这是我的代码:C++ 基本Boost::asio TCP客户端,c++,sockets,boost,tcp,boost-asio,C++,Sockets,Boost,Tcp,Boost Asio,我正在尝试创建基本的异步TCP客户机,它输出它接收到的任何内容。这是我的代码: class tcp_client { private: std::shared_ptr<tcp::socket> socket; std::array<char, 1024> recv_buf; public: tcp_client(boost::asio::io_service& io_service) { socket = std::ma
class tcp_client
{
private:
std::shared_ptr<tcp::socket> socket;
std::array<char, 1024> recv_buf;
public:
tcp_client(boost::asio::io_service& io_service)
{
socket = std::make_shared<tcp::socket>(io_service);
socket->connect(tcp::endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 2522));
start_receive();
}
private:
void start_receive()
{
socket->async_receive(boost::asio::buffer(recv_buf),
boost::bind(&tcp_client::handle_receive, this,
boost::asio::placeholders::error));
}
void handle_receive(const boost::system::error_code& error)
{
std::cout << "handling receive: " << error << ": " << error.message() << std::endl;
std::cout << std::string(recv_buf.data()) << std::endl;
start_receive();
}
};
int main()
{
boost::asio::io_service io_service;
tcp_client client(io_service);
io_service.run();
return 0;
}
class-tcp\u客户端
{
私人:
std::共享ptr插座;
std::数组recv_buf;
公众:
tcp_客户端(boost::asio::io_服务和io_服务)
{
socket=std::使_共享(io_服务);
socket->connect(tcp::endpoint(boost::asio::ip::address::from_string(“127.0.0.1”),2522));
开始接收();
}
私人:
无效开始\接收()
{
套接字->异步接收(boost::asio::buffer(recv\u buf),
boost::bind(&tcp_-client::handle_-receive,
boost::asio::占位符::错误);
}
无效句柄接收(常量boost::system::error\u代码和错误)
{
std::cout,你确实读过这条消息吗?当它说“连接:连接被拒绝”时,你认为这是什么意思?在本地主机上的TCP端口2522上有东西在侦听吗?@Someprogrammerdude消息没有输出,因为句柄从未到达。端口2522上没有任何内容,它应该是免费的。(至少netcat是这么说的)。更改到不同的端口不会改变错误代码。您是否有任何要连接的程序?我的意思是,您有一个客户端,但没有服务器。除非您只是没有发布,否则您应该有另一段代码要连接。如果您要查找示例,您可以参考boost.asio chat示例()“连接被拒绝”这意味着你的socket->connect(…)
调用失败。如果没有什么可连接的,那怎么会成功呢?程序怎么可能继续?你可能需要学习一些关于TCP工作原理的基本知识。好吧,我真是笨透了。我是以“服务器端”的身份运行netcat的但实际上使用的是另一个端口。我想你们所有在这里发表评论的人,现在应该关闭这个端口了。
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >: connect: Connection refused