c++ - 创建 tcp::acceptor 时出现段错误

标签 c++ boost-asio

<分区>

我有一个刚刚开始出现段错误的简单程序。 main()函数看起来像这样:

int main()
{
    try
    {
        std::string peerRequestPort;
        std::cout << "enter port listening: ";
        std::cin >> peerRequestPort;

        asio::io_service io_service;

        network::PeerManager peerManager(network::Peer({"0,0,0,0",peerRequestPort}));

        network::PeerRequestServer peerRequestServer(io_service,peerRequestPort);
        peerRequestServer.Start(peerManager);

我在创建 asio::ip::tcp::acceptor 时遇到段错误在PeerRequestServer构造函数。 PeerManager 的构造函数不做任何数据操作或任何事情,它只是存储提供的 Peer结构。 PeerRequestServer构造函数也不做任何事情,它只是启动一个 asio::ip::tcp::acceptor使用提供的 asio::io_service& .

调用栈是

#0 0041C77D asio::detail::service_registry::keys_match(key1=..., key2=...) 
#1 ??   0x0041cbd2 in asio::detail::service_registry::do_use_service (this=0xa631a0, key=..., factory=0x41cef8 <asio::detail::service_registry::create<asio::socket_acceptor_service<asio::ip::tcp> >(asio::io_service&)>) 
#2 0041CA6A asio::detail::service_registry::use_service<asio::socket_acceptor_service<asio::ip::tcp> >(this=0xa631a0) 
#3 004116CB asio::use_service<asio::socket_acceptor_service<asio::ip::tcp> >(ios=...) 
#4 00412A2B asio::basic_io_object<asio::socket_acceptor_service<asio::ip::tcp>, true>::basic_io_object(this=0x28fcec, io_service=...)
#5 00413079 asio::basic_socket_acceptor<asio::ip::tcp, asio::socket_acceptor_service<asio::ip::tcp> >::basic_socket_acceptor(this=0x28fcec, io_service=..., endpoint=..., reuse_addr=true) 
#6 00409513 network::PeerRequestServer::PeerRequestServer(this=0x28fcec, ioService=..., portListen=...) 
#7 00401B24 _fu38___ZSt3cin()

这里是 PeerRequestServer构造函数:

PeerRequestServer::PeerRequestServer(asio::io_service& ioService, std::string portListen)
: m_acceptor(ioService, tcp::endpoint(tcp::v4(),std::stoi(portListen)))
{
    std::clog << __func__ << std::endl;
}

还有 PeerManager小号:

PeerManager::PeerManager(Peer self)
: m_self(self)
{
}

所以我看不到从 main 开始到 PeerRequestServer 的位置构造函数,我有可能导致段错误...

最佳答案

IP 不应该是 0.0.0.0 而不是 0,0,0,0 吗?

关于c++ - 创建 tcp::acceptor 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32932338/

相关文章:

c++ - 使用线程超时 boost ASIO 线程池

c++ - ASIO UDP:类 std::allocator<void> 没有名为 ‘construct’ 的成员

c++ - boost::asio async write 需要互斥体吗?

c++ - 爬山算法如何工作?

c++ - std::cout<< ' ' <<std::endl;输出一个数字;为什么?

sockets - Boost ASIO 丢弃 UDP 数据包

c++ - 使用 boost asio 时如何获取 UDP 远程端点?

c++ - 在两个略有不同的 std::map 之间转换

c++ - 如何在 Linux 上构建 "lzma sdk"

c++ - 列表上的冒泡排序——在计算上花费了太多时间