问题标签 [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 回答
103 浏览

c++ - Qudpsocket readyread() 在 try-catch 块中不起作用

我想通过 UDP 协议获取消息。如果我在 try-catch 块中创建与 QUdpsocket 一起使用的对象,则信号 readyread() 不起作用。但是,如果我从 try-catch 块中创建了 UDPworker 的对象 - 一切正常。我在异常和 Qt 组合中做错了什么?是关于实现 QUdpsocket 吗?

主文件

pr.pro

主窗口.cpp

主窗口.h

0 投票
1 回答
131 浏览

qt - 在 Qt 中使用 QUdpSocket 将 Union 转换为 QByteArray,反之亦然

我有一个像下面这样的联盟

我想将myDataunion 转换为 aQByteArray以便我可以使用QUdpSocketusing writeDatagram()函数通过套接字发送它。所以首先告诉我如何将其转换为QByteArray.

接下来的事情是,在接收方我怎样才能再次转换QByteArray成这个联盟myData

0 投票
1 回答
37 浏览

c++ - 使用 QUdpSocket 从特定地址接收数据

我正在尝试通过 UDP 进行客户端到客户端的通信。我习惯QUdpSocket这样做。

我的第一个客户端的 IP 是 127.0.0.2,第二个客户端的 IP 是 127.0.0.3。

在我的第一个客户中,我想发送数据,所以我这样做:

在我的第二个客户中,我有这个:

但我无法从 接收我的数据readDatagram(),我不知道为什么。

我在两边都做每一个功能,这意味着我在两个客户端上读写(这是做一个 VoIP 呼叫)。

有谁知道我的错误是什么?

0 投票
1 回答
226 浏览

c++ - Qt UDP Socket:如何连续发送请求并获得响应

我有一个 QT UDP 客户端和服务器程序

服务器代码

主文件

我的服务器.cpp

客户代码

主文件

我的客户端.cpp

我期待客户端控制台输出应该如下所示

另外,如果我在调试模式下运行并将断点放在 BREAKPOINT#1 上(请参见上文),我得到的只是

如果我在 BREAKPOINT#2 上放置断点, "Received From Server: "则控制台上不会出现一个断点,并且所有发送的内容都会立即出现。所有这些意味着所有发送请求同时发生,然后在客户端接收。

我担心的是

  1. 我应该能够为一个请求获得一个响应,否则如果我的程序连续运行 24 或 48 小时并不断发送请求,那么客户端将不会得到一个响应!

  2. 我还需要将每个响应与相应的请求实时映射,这不会发生

在下面编辑()

即使我不循环发送消息而是单独发送,行为也是相同的。我在下面稍微更改了代码

在 BREAKPOINT#3 和 BREAKPOINT#4 添加断点不会产生任何"Received From Server: "消息。

0 投票
1 回答
121 浏览

qt - QUdpSocket readReady 未发出信号

我刚刚开始为我的 Qt 应用程序实现一个 UDP 客户端。我按照这个例子。我能够向远程主机发送数据和从远程主机接收数据。这已在我的远程主机以及我正在为其开发此应用程序的本地客户端验证(通过从我的 main.cpp 调用 handleReadyRead() 在本地验证)。我似乎无法让 QUdpSocket 发出它的 readyRead 信号。这是为什么?

主文件

udpclient.h

udpclient.cpp

0 投票
1 回答
137 浏览

c++ - 如何使用 QUdpSocket 写入端口 0?

我想使用 Qt 实现WoL Magic Packet,使其可以跨 GNU/Linux 和 Microsoft Windows 进行移植。维基百科说:“通常作为 UDP 数据报发送到端口 0(保留端口号)、7(回声协议)或 9(丢弃协议) ”,但我无法使用 QUdpSocket 在端口 0 上写入任何数据,为什么?

问题样本

输出是:

其他端口(7 和 9)都可以,但为什么我不能将数据写入端口 0?

0 投票
0 回答
55 浏览

c++ - QUdpSocket 有时会丢失数据报

我正在尝试在 Linux 上使用 Qt6 解决网络错误,其中 aQUdpSocket没有接收到它应该接收的所有数据。虽然对于少量数据(以 kB 为单位),所有字节都可以通过,但较大的数据报(~384 kB)从末尾被剪掉。在这种情况下,我测量到在数据流的末尾丢失了大约 4kB。

为了解决基本问题,我有:

  • 尝试将物理以太网连接从本地路由器更改为具有静态 IP 的点对点链接。

  • 通过 Wireshark 确认所有数据(包括剪辑位)都进入了我的 Linux 套接字。并通过日志消息确认并非所有数据都从QUdpSocket.

  • 尝试使用setReadBufferSize()和增加接收缓冲区大小setSocketOption(QAbstractSocket::ReceiveBufferSizeSocketOption, ...)

  • 验证当我使用QNetworkDatagram而不是缓冲区以及使用QUdpSocket's 信号而不是同步接收模式时会出现相同的错误。

这是我展示该错误的最小示例代码:

0 投票
0 回答
45 浏览

python - Pyside6 中的 QUdpSocket 没有发出 readReady,而 QT C++ 应用程序中的等效代码运行良好

我正在转换我在 Qt C++ 上工作的简单 Udp 客户端应用程序,但是当我尝试在 Pyside6 上实现相同的行为时,即使套接字似乎处于 ConnectedState,也不会触发 readyRead。

我正在使用 Windows 机器。

Pyside6 代码 - 未触发 readyRead

当我将此例程作为 Qt C++ 应用程序执行时,我得到了结果

我也很惊讶没有在 Pyside6 中找到 QUdpSocket 的示例代码。

提前致谢。

0 投票
1 回答
18 浏览

c++ - QUdpSocket 广播对多个客户端不起作用

我有一个使用 QUdpSocket 广播心跳消息的应用程序:

mscuint16Port 是:

发送消息的代码:

int64Written 在每次调用 writeDatagram 后被赋值为 47。在我在同一系统上运行的客户端应用程序中:

插槽:

我在同一系统上的客户端应用程序上启动了两个实例,问题是只有第一个实例正在接收 UDP 广播,另一个没有接收到任何东西......

目的是拥有许多客户端和单个广播应用程序。