【问题标题】:Packets sent from QUdpSocket are not seen in Wireshark从 QUdpSocket 发送的数据包在 Wireshark 中看不到
【发布时间】:2019-05-23 22:12:57
【问题描述】:

我正在尝试在 Wireshark 中查看我的传出 UDP 流量。

我创建了新套接字并将其绑定到我的 QHostAddress::LocalHost 且没有错误。然后我发送了一些数据 writeDatagram 并且返回值是正确的,但是我在 Wireshark 中没有看到传出流量。

// create a socket called from init() 
socket = new QUdpSocket(this);
bool ret = socket->bind(QHostAddress::LocalHost, 47000);
if (ret == false)
   {
    printf("failed to bind socket\n");
   }    


// create and sent some data called from send()
QHostAddress addr("192.168.5.12"); // addr of my other computer
qint64 size = socket->writeDatagram(QByteArray("udp data"),addr,47000);

printf("sent %d\n",size); // correct size sent 8

我检查了防火墙设置,如果我关闭它,结果是一样的。

【问题讨论】:

  • 你在哪个平台上? WinPcap can not capture from loopback device out of the box on windows。你能看到任何其他环回流量吗?也许试试ping localhost 看看是否会在wireshark 中产生任何流量...
  • 您使用的是什么操作系统? QHostAddress::LocalHost 应该解析为wireshark 在windows(和其他一些)上无法监听的环回地址stackoverflow.com/questions/5847168/…
  • 你在wireshark上听什么网络设备?
  • @Mike,抱歉没有说明平台现在是上午 12 点,我工作到很晚。我在 Windows 7 上。ping localhost 时看不到任何流量。我将 QHostAddress::LocalHost 更改为我的网络地址,现在我看到了数据包。谢谢大家的帮助。我不敢相信我没有尝试过这个。解决了。​​
  • 不用担心 :) 只有当您能够看到来自ping localhost 的 ICMP 数据包时,您才能看到 Qt 在wireshark 上发送的内容。如果你想尝试让wireshark捕获环回流量,你可能想参考我之前评论中的链接(虽然我自己没有尝试过这些说明)。

标签: c++ qt wireshark qudpsocket


【解决方案1】:

通过将 QHostAddress 从 localhost 更改为分配的路由器地址来解决。

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多