首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Boost-ASIO为Wireshark设置服务器以连接和接收数据包?

使用Boost-ASIO为Wireshark设置服务器以连接和接收数据包?
EN

Stack Overflow用户
提问于 2015-07-17 08:09:20
回答 1查看 188关注 0票数 0

我正在尝试使用ASIO创建一个简单的服务器,以便将数据包发送到Wireshark,以便使用远程接口功能查看它们。

这是设置服务器并等待连接的代码。

代码语言:javascript
复制
void server(boost::asio::io_service& io_service, unsigned short port)
{

    tcp::acceptor a(io_service, tcp::endpoint(tcp::v4(), port));

    for (;;)
    {
        auto pSock = std::make_shared<tcp::socket>(io_service);

        auto handler = [pSock](const boost::system::error_code& err) -> void
        {
            if (err)
            {
                pSock->close();
                return;
            }
            auto buf = connectToNamedPipe();
            streamOut(pSock, buf);
            pSock->close();
        };
        std::cout << "Awaiting connection" << std::endl;
        a.async_accept(*pSock, handler);
        io_service.run();
    }
}

这是在客户端连接后发送包的代码

代码语言:javascript
复制
void streamOut(std::shared_ptr<tcp::socket> pSock, const std::pair<std::unique_ptr<char[]>, std::size_t>& b)
{
    ::boost::system::error_code ec;

    write(*pSock, ::boost::asio::buffer(b.first.get(), b.second));

    for (;;) 
    {
        char a;
        std::cin >> a;
        if (a == 'e')
            return;
    }
}

但是,当Wireshark进行连接时(使用manage interfaces对话框中的remote interfaces选项卡),它会挂起并停止响应,直到关闭此应用程序。在Wireshark开始发送数据之前,是否还有其他数据需要发送到Wireshark?我只是错误地发送了数据吗?服务器设置是否正确?

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 16:23:00

Wireshark是一个“窃听器”。

你不会“向它发送数据包进行查看”,它也不会“连接”到你的应用程序。

取而代之的是,Wireshark只需接入NIC,即可查看传输的所有数据包。因此,请使用常规客户端(如netcat)连接到您的服务器,并让Wireshark监控所涉及的NIC。

我相信,为了简单起见,您可以一次捕获所有网络适配器上的流量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31466542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档