问题标签 [qudpsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
376 浏览

root - qudpsocket 多播 root 权限

我已经使用 QUdpSocket 编写了一个简单的 udp 多播服务器,但 writedatagram 函数只有在我以 root 权限运行应用程序时才有效。这是正常的吗?这是一种痛苦。加上 iperf(例如)似乎在没有 root 权限的情况下工作。我究竟做错了什么?

平台是 Ubuntu 12.04 3.2.0-56-generic x86_64 我的代码很简单...

此代码基于 QT 自己的示例代码,没有提及 root 权限。

如果我只是将 IP 地址更改为非广播/多播地址(例如 192.168.1.18),我不需要 root 权限。

0 投票
1 回答
18920 浏览

c++ - C++/Qt 中的 UDP 服务器-客户端聊天

我正在尝试使用 Qt 编写一个聊天程序。它已经完成了一半,但它有一些问题。

首先,当我想将 lineedit 中的书面消息发送给客户时,我得到一个错误。它是一个QString,但writeDatagram唯一发送一个QByteArray。我用谷歌搜索了它,有一些方法可以转换QStringQByteArray,但我正在寻找更好的解决方案。我想我应该使用,connectToHost()但不工作。read()write()

第二个也是主要问题是我无法连续发送和接收消息!显然这个还没有发生,但我知道它有问题,因为我已经在 Qt 控制台上对其进行了测试,但它也没有在那里工作。

我是 GUI 和 Socket 编程的新手,因此在发布此主题之前我进行了很多搜索。

更新:我的第一个问题解决了,但现在 UDP 数据包无法发送和接收,更不用说像聊天应用程序一样工作了。

更新:我发现了问题所在并解决了。代码需要两个QUdpSocket对象。我还更新了代码。它现在功能齐全。如果您有其他意见,我很想听听他们,否则我有我的答案。

服务器:

客户:

0 投票
1 回答
9953 浏览

c++ - Qt QUdpSocket:readyRead() 信号和相应的插槽未按预期工作

我很难找到为什么我的简短QUdpSocket示例不起作用。我计划仅使用一个 UDP 套接字在 192.168.2.66 端口 2007 上读取和写入嵌入式设备。设备将始终在端口 2007 上回复发送者。我使用 UDP 终端软件测试了该设备,并按我说的那样工作。因此,我设计了一个简单的类来嵌入管理设备所需的功能:

我想问题出在 Open 方法中:

我对 connect() 使用 Qt 5 语法,m_strHost值是“192.168.2.66”并且m_wPort是 2007

我的Write方法很简单(加了#if 0里面的部分,看socket有没有收到数据)

这是我的测试接收()方法......我写它只是为了看看信号槽是否有效:

我不明白出了什么问题。我发现一些帖子说在 Qt 中仅使用一个 UDP 套接字是不可能读写的(Qt 使用 BSD 套接字,所以应该是可能的)但是我的示例看起来是建议的解决方案,所以我真的不明白什么是行不通的。

0 投票
0 回答
711 浏览

c++ - QUdpSocket,我在 192.168.1.x 上时如何从 192.168.0.x 读取广播消息

我正在尝试从 192.168.0.xxx 捕获一些测试广播消息,而我在 192.168.1.xxx
我有一个设备可以将广播测试数据包从 192.168.0.1 发送到 192.168.0.255。
我的应用程序位于 192.168.1.70 上,并尝试使用相同的端口号接收广播 UDP。

我正在运行 WireShark,我可以看到来自设备的正确数据包从 ...0.1 变为 ...0.255。但是,我无法通过 ...1.70 的代码来获取它。

这是我在 ...1.70 上使用的接收示例测试代码位。

0 投票
0 回答
299 浏览

qt - 与 Qt 的 BootP 和 UDP 套接字通信

我正在构建一个计算机客户端,它通过 UDP IP 从医疗病人监视器接收数据。我正在使用 QTs API,因此使用 QUdpSocket 类来建立通信。我要从中接收数据的监视器取决于要接收的 BootP 服务器和 IP 地址。这是成功实现的,我给它的IP是“192.168.10.10”。通过使用 Microsoft 网络监视器,我可以看到我想从我的程序中读取的数据包是从 - 源:192.168.10.10 发送到 - 目标:192.168.10.255。源端口和目的端口都是:24005。

我用来建立通信和读取数据报的代码如下:

我还尝试了 bind() 命令的不同变体:

没有任何运气。

我对 IP 网络的经验很少,我不知道这在哪里失败。例如,将套接字绑定到目标地址是正确的还是应该是源地址?(我都试过了)。分配的 IP 地址是否有效?它可能是什么其他错误来源?我猜这些数据包没有被我的防火墙阻止,因为它们在网络监视器中可见。

非常感谢您对此的投入:)

最好的,莫滕

0 投票
2 回答
3025 浏览

c++ - QUdpSocket 不发出 readyRead() 信号

我遇到了一个问题QUdpSocket。信号readyRead()似乎永远不会发出。所以,我决定创建QTimer并检查套接字读取队列的状态。这样我确保套接字正常工作(bytesAvailable()显示字节数)和信号/插槽机制也在工作(发生超时()信号)。但是为什么readyRead()不发射呢?谢谢。

Qt 5.1

0 投票
1 回答
1942 浏览

qt - QUdpSocket setSockOpt

我有一些旧代码,它们在套接字中使用这个标志:

如何更改此位置以使用 QUdpSocket?我在 QUdpClass 中找不到任何模拟 setsockopt。QAbstractSocket 提供 setSocketOption,它只允许 4 个变体标志(枚举)。我只在 linux 版本中需要它,所以如果有任何原生 func 就可以了。

0 投票
1 回答
979 浏览

python - Qt 写入 Linux 机器上的 UDP Socket 和 Windows 使用 Python 从 Socket 读取

=========== 更新:===========

我现在使用广播 ip 10.6.0.3 和更高的端口 57890。我可以在 Windows 网络监视器中看到流量,但仍然无法让 Python 读取它。

===============================

我有一台 linux 机器使用 Qt 和 QUDPSocket 向 IP 地址 10.6.0.2 上的 UDP 套接字写入“hello”消息。我还有一台 Windows 机器,我想使用 Python 读取“你好”消息。从我的 Qt 代码中,我可以看到正在写入数据,但是,Windows 上的 Python 程序永远处于“等待数据”状态。windows机器确实可以ping通10.6.0.2。我究竟做错了什么?

测试顺序:

Qt 输出:

Qt代码:

蟒蛇程序:

0 投票
0 回答
395 浏览

qt - 如何在 ActiveX (ActiveQt) 控件中使用信号

我正在尝试从 Qt 修改 activeQt/wrapper 示例代码以接收 Udp 数据包。我想构建 ActiveX 控件并将其放入 C# frameWindowApplication

连接/信号不起作用,我认为是这样,因为缺少 Q_OBJECT 宏,但是当我取消注释 Q_OBJECT 宏时,我有一个错误代码:

谁能帮助我如何正确接收这些数据包?

0 投票
1 回答
702 浏览

c++ - 使用 Qt 套接字广播大数据

我正在使用QT。我需要广播数据,所以我尝试使用QUdpSocket. 但数据可能太大(writeDatagram QUdpSocket::error返回后DatagramTooLargeError)。所以我拆分数据并writeDatagram多次调用这些部分。但是Received socket只接收一次数据,只有第一个数据包。接收代码是