【问题标题】:How do I fix the boost/asio c++ exception error?如何修复 boost/asio c++ 异常错误?
【发布时间】:2018-10-31 18:59:28
【问题描述】:

我正在尝试连接到 localhost 端口并且收到以下错误,我该如何解决这个错误?

" 在抛出 'boost::exception_detail::clone_impl >' 的实例后调用终止 什么():连接:连接被拒绝“

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

int main() {
boost::system::error_code ec;
using namespace boost::asio;

io_service svc;
ip::tcp::socket sock(svc);
sock.connect({ {}, 3000 }); // localhost port

std::string response;

do {
    char buf[2048];
    size_t bytes_transferred = sock.receive(buffer(buf), {}, ec);
    if (!ec) response.append(buf, buf + bytes_transferred);
} while (!ec);

// print and exit
std::cout << response <<std::endl;
}

【问题讨论】:

  • 那么,什么在监听 3000 端口?你确定有什么事吗?
  • 3000 端口是免费的.. 没有人在听它.. 我选择它是因为我没有服务..
  • 如果没有人在听,你在连接什么?没有意义...

标签: c++


【解决方案1】:

你不能连接到一个没有任何监听的端口。这就是 Connection Refused 的意思:“这里没有任何东西可以响应您的请求。”

您必须运行或使用其他服务器才能使 connect() 成功。

如果您使用的是类似 unix 的系统,您可能可以使用像 socat 这样的工具来快速组合一个服务来侦听您可以连接的端口。

【讨论】:

  • 我忘了提到我在这个端口上有一个反向隧道,我想通过监听它来获取一些信息。这是合适的方法吗?
  • 如果要监听 3000 端口,需要使用 sock.listen() 和 sock.accept(),而不是 sock.connect。我对提升实现的了解不够多,无法为您提供代码。
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
相关资源
最近更新 更多