问题标签 [qtcpserver]

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 投票
2 回答
5123 浏览

qt - 如何通过 QTCPSocket 发送文件及其文件名?

是否有任何简单的方法可以将包含文件名的文件发送到服务器,以便服务器和客户端中的文件名完全相同?

这是我的代码

发件人

接收者

0 投票
1 回答
1099 浏览

connection - QTcpSocket false 连接到 QTcpServer

一段时间以来,我一直在使用 Qt(对不起我的英语)。我现在正在使用 QtNetwork。

我需要创建一个类似系统的客户端服务器。基本思路如下:

  • 两者(客户端和服务器)的 IP 都可以更改。无法将服务器 IP 存储在客户端的配置文件中。因此,服务器必须以某种方式公开其 IP,并且客户端必须能够检测到要连接的服务器 IP。

  • 客户端必须能够在没有服务器的情况下工作,并更新服务器(一旦连接)它的工作。

  • 客户端和服务器在同一个 WLAN 网络中运行,因此无需通过 Internet 连接。

  • 这个新系统旨在替换旧系统(也包括客户端和服务器)。旧服务器仅使用 UDP 广播消息与客户端通信,因此,有时消息会丢失。

因此,对于第一点,我在服务器中实现了一个计时器。此计时器每 X 次通过 UDP 发送一条带有消息“连接到服务器”的广播消息。此消息的想法是客户端检测到此类消息并获取服务器 IP 进行连接。

服务器使用 QTcpServer 来检测客户端连接,并为每个客户端存储一个新的 QTcpSocket 进行通信。

客户端在获得服务器 IP 后使用 TcpSocket 进行连接。

听起来很简单。

我已经实现了连接系统,并且在本地机器(服务器和一些在同一台机器上运行的客户端)中,系统可以正常工作。可以完成连接并且可以进行通信。客户端和服务器都使用 gcc 4.7.2 在 Chakra Linux 64 位上编译。系统上安装的Qt版本是4.8.4。

现在,我用两台真机测试了系统(服务器在 Chakra Linux 64 位上运行,客户端在 Windows 7(一些 32 位和另一个 64 位)和两台 Windows 8(只有 32 位)上运行)。客户端的 Windows 版本已在运行 Windows 7 32 位、Qt 4.8.3 和 MingW 4.6.2 的虚拟机 (VirtualBox 4.2.4) 上编译。Windows 客户端运行所有 32 位编译版本的客户端(所有 32 位 Windows 机器和 64 位 Windows 机器)。

客户端可以检测和读取广播消息(UDP,工作在45454端口),一旦他们得到服务器IP(检测到的IP是正确的),他们会尝试连接。

问题是,从 7 个客户端中,只有一个 Windows 8 连接了一次。所有客户端都尝试连接,所有的 QTcpSocket 都发出“已连接”信号,但服务器没有检测到任何连接。

这完全是随机的,因为有时我可以连接 1 或 2 个客户端。其他时候没有。

此代码用于客户端广播初始化。

此代码来自客户端,当接收到服务器广播消息时。

在服务器端,我有这个代码来初始化:

这是连接新客户端的代码的一部分:

“sendToClient”成员函数只在连接后向客户端发送消息。

所以,问题是,我不知道为什么会有这么随机的连接,大多数时候是错误的连接(客户端再次发出连接的信号,但是在服务器端,当客户端没有发出信号时连接...)。

我不知道我做错了什么......

客户端和服务器都使用 UDP 端口 45454 和 TCP 端口 8888。我已经更改了 TCP 端口值(在客户端、服务器和两者上)和同样的故事。我已经更改了 TCP 端口,如果两者上的端口不同,则消息不会到达客户端...

对不起,很长的文字,但我认为最好告诉你我做了什么......

我正在寻找关于哪一个可能是我的问题的建议,或者如果我的代码有问题......但请记住,有时(并且只是有时)一两个客户端可以真正连接......

0 投票
3 回答
1062 浏览

c++ - 子类化 QTcpServer 时,如何延迟发出 newConnection() 信号?

我想创建一个 SSL 服务器,所以我将 QTcpServer 子类化并覆盖incomingConnection(),在其中创建一个QSslSocket,设置它的描述符,然后调用QSslSocket::startServerEncryption. 此时我需要等待QSslSocket::encrypted()信号发出,然后我的服务器才应该发出newConnection()信号。客户端代码然后会认为它正在使用 QTcpSocket,但实际上会使用安全套接字。

但是QTcpServer 总是 newConnection()在调用后发出incomingConnection()(我查看了 QTcpServer 的源代码):

所以我的问题是,有没有一种方法可以防止QTcpServer发出newConnection(),直到我准备好自己发出它?

我想要这个的原因是我希望我的类能够被不知道它正在使用它的代码用作 QTcpServer 的直接替换,因此它必须完全像 QTcpServer 一样运行:

我的 SslServer 类代码目前是这样的:

0 投票
2 回答
264 浏览

qt - 使用 QTcpSocket 传输文件时出现奇怪的字符

我正在尝试使用 QTcpSocket 传输文件。连接运行良好,但我的问题是当我尝试在文件中记录接收到的字节时。当我打开文件时,文件开头有一些奇怪的字符。这些字符是什么?

0 投票
1 回答
303 浏览

c++ - 尝试使用信号将 QTcpServer 连接到 GUI

我在服务器和客户端之间创建了一个连接,该连接在控制台中工作正常,但我无法使用信号和插槽将我的 QTcpServer 类连接到 GUI。这是我的代码:

服务器TCP.cpp

ManinWindow.cpp

0 投票
1 回答
196 浏览

c++ - 如何强制 QTcpServer 监听特定端口?

是否可以强制 QTcpServer 监听小于 1024 的特定端口?

0 投票
2 回答
1175 浏览

c++ - 为什么 QTcpSocket 接收到错误的数据?

我正在编写一个简单的网络应用程序。客户端发送到服务器消息服务器在 QTextEdit 中打印并响应客户端。我正在使用 QTcpServer 和 QTcpSocket。有一个我无法解决的问题。接收数据是 quint16 + QTime + QString,它作为 QByteArrey 发送。我使用 quint16 接收数据块的大小。并且由于某种原因,当客户端发送到服务器时

服务器获取:

如您所见,由于某种原因,服务器从 QDataStrem 获取了错误的变量值,并且始终为 30073。我不明白为什么?

0 投票
0 回答
471 浏览

qt - 使用用户名和密码与现有服务器的 QT 连接

我正在研究适配器接口,我将构建的模拟器与在服务器上运行的现有模拟器连接起来。

我一直在研究 QAbstractSocket,并且对它有了一些基本的了解。

但问题是我试图访问的服务器有一个身份验证系统,我实际上需要输入用户名和密码凭据。

只要我浏览了课程参考资料,我就没有任何解决方案。

谁能指导我应该使用什么 QT 类,或者可以告诉我一些如何访问它们的想法?

0 投票
0 回答
292 浏览

qt - QTCP SOCKET 中的服务器响应

我附上了我正在处理的代码。如您所见,我正在与服务器建立连接,并且正在等待它的响应。

我正在执行命令 lb,它列出了一组命令。我已成功建立与服务器的连接,但我没有得到我执行的命令的结果。

我想要做的是,我正在我的服务器和我的代码之间建立一个 telnet 连接。我正在尝试从我的代码间接执行命令并处理从服务器获得的输出结果。

0 投票
1 回答
668 浏览

qt - 使用 QTCP 套接字的服务器响应

我正在将我的代码连接到现有服务器,并且能够从服务器获得响应。

但问题是响应的内容太大而无法以简单的方式处理。

现在下面是我用它来检索数据的一段代码。

我在使用 for 循环简化上述代码时遇到问题。

我不知道如何在我的 for 循环中实现 socket->waitForReadyRead。谁能帮我解决这个问题?