【发布时间】: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