Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基本Boost::asio TCP客户端_C++_Sockets_Boost_Tcp_Boost Asio - Fatal编程技术网

C++ 基本Boost::asio 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

我正在尝试创建基本的异步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::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