问题标签 [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 投票
0 回答
756 浏览

c++ - 在调试模式下永远不会收到 QTcpServer newConnection 信号

出于某种原因,newConnection当我在调试模式下运行时,信号似乎没有发出或正确处理。

下面是一个示例,例如,当我 telnet 到此服务器时,OnNewConnection当我在发布模式下运行程序而不是在调试模式下运行程序时会调用它。有任何想法吗?

主文件

服务器.h

服务器.cpp

0 投票
1 回答
1038 浏览

c++ - Qt5 QTcpSocket 派生类和QTcpServer

我正在开发一个有意义的应用程序,我将我的类包装在已实现的 QTcpSocket 周围(因为它是一个 TCP 协议,我需要能够尽可能无缝地使用原始套接字和添加的功能)。

因此,为了简单起见,我的代码结构如下:

对于 QTcpServer,默认的 nextPendingConnection() 函数返回一个 QTcpSocket 实例,我无法将其转换为 MyTCPSocket(据我所知,QTcpSocket 没有复制结构)。

我最好的选择是什么?我在想我可以创建一个新的 MyTCPSocket 并将套接字描述符设置为 MyTCPServer 的 nextPendingConnection() 返回的描述符,但我不确定当旧的套接字被删除时它会如何工作。

有没有更好的方法来处理这种情况?

0 投票
1 回答
787 浏览

c++ - QTcpServer::incomingConnection(qintptr socketDescriptor) 是否可以连接指定的套接字?

服务器类继承自 QTcpServer,连接类有一个 QTcpSocket 作为成员和一些关于想要连接的用户的信息(名称、IP、ID ...)

我的问题是我对new_connection 一无所知。我需要知道谁在连接服务器。出于这个原因,我想重新连接,但如何?有什么办法吗?还是必须等到我从连接的套接字(用户)收到数据(问候消息)?

0 投票
0 回答
770 浏览

c++ - 通过 QTcpSocket 进行双向通信

我正在编写一个通过 QTcpSocket 在服务器和客户端之间进行通信的应用程序。

服务器是标准电脑上带有 gui 的应用程序。

Client 是 Raspberry pi 上的控制台应用程序。

客户端.cpp

服务器.cpp

这是代码。所以现在问题描述:

我正在启动服务器应用程序,然后在 Raspberry 上启动客户端应用程序。两个应用程序都在连接我在 Server.cpp 的“onNewConnection”方法中看到它。

但是,当我尝试使用 server.cpp 中的“sendMessage”向客户端发送内容时,客户端什么也没有显示。我应该在 client.cpp 的“readyRead”方法中从服务器接收数据,但它永远不会被调用。我做错了什么?

我的朋友告诉我检查我是否在两个平台上获得了相同版本的 QT。所以我检查了一下,它不是,但也许是问题所在?

树莓派,Arch linux 没有 x 服务器

服务器,linux mint

您能否也给我一些改进此代码的提示?

0 投票
1 回答
407 浏览

c++ - QThread 和 QTcpServer 是一个不错的选择吗?

这是我在这里的第一篇文章,我会尽力解释我的问题,不要犹豫纠正我,因为我是初学者。

我正在使用 Qt 设计一个 GUI 来控制 3D 引擎。Qt 和 3D 引擎使用 QTcpserver 进行通信。我可以向 3D 引擎发送命令,例如“移动对象”或“列出场景中的对象”,引擎会回答。

目前,有两个问题:1)当服务器响应时,我不知道这是来自“移动”功能还是“列表”功能的响应。我在 GUI 上解析启动事件的答案,但这不是一个合适的解决方案。2)在发送命令之前,我调用了waitForReadyRead函数,它阻塞了主线程。这就是我在这里发帖的原因。

我想到了一个解决方案:一个线程,其中包含一个命令列表和函数指针,以调用下一个。当我单击 UI 按钮时,它会将命令发送到带有正确函数指针的列表,并且线程将尝试清空列表发送命令到服务器。

但我真的不知道这是否是解决我问题的好方法。我对 QTcpServer 和 QThread 了解不多,我阅读了许多文章,它们一起用于处理多个客户端连接,但这对我没有帮助。

我没有在这里发布代码,因为我认为我的问题与“代码相关”无关,但如果你问我,我很乐意这样做。

感谢您为我指出正确的方向。

0 投票
1 回答
53 浏览

c++ - 我无法创建服务器列表

我正在尝试使用 qttcpserver 创建服务器。我的代码是为此示例编写的。唯一的区别是我也使用了线程池。我有一个表格,上面有两个按钮。第一个按钮创建我的类服务器的对象,第二个按钮删除。清除按钮负责打开和关闭服务器。我想在不同的端口上运行服务器。所以,我需要在我的服务器上创建多个类对象,并作为参数传递给所需端口的构造函数。

为了让您更好地理解我的按钮的代码。

这是我在一个端口上运行服务器时的示例。这是不同端口的示例。

在第一个示例中,一切正常。一秒就有大问题。这是一个示例问题。

看调试,发现连续出错delete *i(server.exe中0x01033862处未处理异常:0xC0000005:访问冲突读取地址0x0000000C。)

那为什么只在函数调用第二个停止时才会出现,一开始一切都很好?

请帮我解决问题。

PS对不起,这不是一个完整的示例代码,因为它非常大并且解析起来非常困难。也对不起我的英语。

0 投票
1 回答
1379 浏览

c++ - Qt 客户端-服务器应用程序,“发送图像”有问题

我正在尝试 Mat通过QDataStream. 第一项是 int,即缓冲区的大小。它适用于 10 到 15 张图像,然后服务器读取第一个 int 一个随机数(通常为 ~2^30),这会导致应用程序崩溃。这是客户端,在一个循环中(图像来自网络摄像头,周期为 500 毫秒):

服务器端:

两个插座都是QTcpSocket.

输出示例:

只有前三个是成功的。

0 投票
0 回答
550 浏览

c# - 从 C# 向 QT 发送消息

我需要从 C# 客户端(3.5)向 QT 服务器发送一个字符串行。一切正常,除了在服务器端我必须检查前 2 个字节的行的大小。(我不能只是无限循环列出客户端)。我尝试将行的大小设置为行的第一个字节,但它在服务器端读取错误。所以问题是如何将字符串的长度放入字符串的前 2 个字节中?.

在 QT 中是这样完成的:

但在 C# 中它只是

我找不到将大小写入服务器的消息的方法。

0 投票
3 回答
1675 浏览

c++ - 冻结使用 QTcpSocket 发送大文件

我正在尝试从一台 PC 向另一台 PC 发送和接收一些大文件(至少 16GB)。当客户端应用程序收到大约 2GB 并且它消耗了我几乎所有的内存(也用完了大约 2GB 的内存)时,应用程序冻结了。我在服务器端没有这个问题。

这是发送文件的服务器代码

应用程序的客户端已经知道它接收到的文件有多大,这里是接收文件并将其写入磁盘的代码

如果重要的话,我正在使用 ubuntu 14.04。

0 投票
1 回答
283 浏览

qt - Qt 插槽连接成功但未被触发

我尝试通过类newConnection()信号调用我类的插槽QTcpServerconnect()函数返回true,但插槽未执行。

这是我做的:

绑定插槽:

插槽的主体:

为什么它不起作用?