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

c++ - 从服务器向客户端发送数据

我有两个项目,一个用于服务器,一个用于客户端。在客户端,当我要发送数据时,我创建一个QTcpSocket成员变量,然后使用该write()方法发送数据。

在服务器上,我收到信息,但我想将信息发送回客户端。具体来说,我正在尝试验证用户,因此我将他们在客户端登录时使用的用户名和密码发送到服务器,并且我想根据保存在服务器上的数据库检查该数据,然后发送信息返回给客户,以验证信息是否正确。

我的问题是我不知道如何将信息从服务器发送到客户端。在服务器上,我有两个成员变量,QTcpServer server;QTcpSocket* client;.

我已经查看了文档,据我所知,QTcpServer它没有等同于当前连接到服务器的客户端。write()QTcpSocket*

我正在考虑QTcpSocket在服务器上创建一个变量并将信息发送到客户端,就像我将信息发送到服务器一样,但这似乎是错误的,因为这样客户端的行为就像服务器一样,QTcpServer在客户端上有一个变量。

我该怎么做呢?

0 投票
1 回答
320 浏览

c++ - 不能让 QTcpSocket/QTcpServer 一起工作

我试图了解 QTcpSocket 和 QTcpServer 如何一起工作。所以我写了这个简单的例子,它在 localhost 上启动服务器和客户端套接字:

我得到了这个输出:

为什么没有挂起的连接?

PS> 我不想使用 SLOT/SIGNALS 机制。

0 投票
1 回答
122 浏览

c++ - WinCE6 上的 QTcpServer->listen()“不支持协议类型”

我制作了一个必须在 Win32 和 WinCE6 (x86) 机器上运行的应用程序。它在 Win32 上完美运行,但在 WinCE6 机器上执行时:

它返回 false 并说:“不支持协议类型”

我已经用谷歌搜索了它,但我找不到任何解决这个问题的方法,如果有人能帮我解决这个问题,我将不胜感激。

谢谢,约翰内斯

0 投票
1 回答
1387 浏览

c++ - 使 QTcpServer 只接受 IPv4 连接

我正在实现一个 FTP 服务器,它还不支持 IPv6(IPv6 连接不能使用 PORT 和 PASV,它们需要使用 EPRT 和 EPSV 来指定数据连接)。

所以我只需要接受来自我的 QTcpServer 的 IPv4 连接。现在我开始听这段代码:

QHostAddress::Any 应该是 IPv4 任意地址,但当我指定 localhost 而不是 127.0.0.1 时,Filezilla 仍然设法使用 IPv6 进行连接。我认为 QHostAddress::Any 意味着只接受 IPv4 传入连接,但显然情况并非如此。

那么如何禁用 IPv6 连接呢?

0 投票
1 回答
473 浏览

qt - Qt 线程代码在 MAC、Linux 和 Windows 中的不同行为

我为接受来自不同客户端的连接的服务器编写了代码。每个客户端都在不同的线程中服务。每个线程访问数据库以获取数据,然后将此数据更新到连接到服务器的所有客户端。

1)当用户界面第一次向服务器请求数据时,它会正确响应,但在那之后服务器没有读取套接字,即服务器的 readyread() 没有被调用。有趣的是,这在mac 和 linux中运行良好,此问题仅在windows上可见

2)我能够验证当 DB 模块发出一个被线程捕获的信号时,会发生挂起,因为当我移除发射时一切正常。

在这里,我附上了所有需要的 .h 和 .cpp 代码

定义文件

主文件

数据库文件

我的数据库

我的线程.h

我的线程.cpp

我的服务器.h

我的服务器.cpp

这里我上面提到的信号是来自“mydb.cpp”的dataAvailable。如果我注释掉该行,则服务器会响应客户端消息。但是,如果在初始响应之后发出该信号,则服务器似乎挂起并且不再对来自客户端的传入消息做出反应。相同的代码在 mac 和 linux 中运行良好。但它仅在 Windows 中存在此问题。有人可以让我知道我做错了什么,它只在 Windows 中失败了吗?提前感谢您帮助我。

编辑:

这段代码的目的是,每当一个线程导致对数据库的更新调用时,每个线程(包括调用更新的线程)都会收到有关更改的通知。因此,预计当时运行的其他线程也会收到信号。

这是对服务器的期望:

  1. 能够同时允许来自多个客户端的 TCP 连接。

  2. 如果任何客户端请求信息,它会通过 TCP 连接获取所需的数据。

  3. 如果任何客户端更新信息,包括更新客户端在内的所有客户端都会通过 TCP 连接获得通知。

0 投票
1 回答
714 浏览

c++ - Qt:服务器应该广播变化的值,客户端应该监听它

我写了一个计算 Pi 的程序。它近似于 3.14 之后的数字位置……</p>

现在我想知道我的程序当前计算了哪个位置。但我不想在电脑前等待。因此我实现了一个 QTcpServer 和作为客户端访问服务器的可能性。连接工作正常。在下一步中,我想通过服务器发送 Pi 的当前值和位数作为广播。每次客户端连接服务器时,客户端都应该读取这些信息。信息不断更新,客户端只要连接就应该得到这些信息。为了更新客户端的传入信息,我需要一些通知或轮询功能。如何实现信息的广播(服务器)和更新通知(客户端)。

标题

cpp

int value应该模拟 Pi 值。

0 投票
2 回答
4676 浏览

qt - 如何将数据作为 QByteArray/QDataStream 从服务器发送到客户端

在 Qt 的 fortuneserver 示例中,方法 发送了一个 QString sendFortune()。因此从 QStringList 中选择一个 QString fortunes

是否也可以发送其他类型的数据,如文件、图像或多个字符串?还是只能发送一个字符串?

我的第二个问题:作为 QByteArry 发送数据有什么好处,为什么我必须(quint16)通过设置 QDataStream 来定义?

0 投票
0 回答
133 浏览

qt - QTcpServer 永远不会到达incomingConnection

我尝试实现我自己的服务器类继承QTcpServer

这是我尝试运行的简单代码:

服务器.cpp

主文件

我的问题是我从来没有到达incommingConnection(我https://localhost:1080在我的浏览器中尝试作为测试客户端)而且我实际上不明白为什么。服务器似乎可以正常监听,因为只要应用程序运行,我的浏览器就会尝试加载页面,并在我退出应用程序时设置加载错误。

PS:这是一个控制台应用程序

0 投票
1 回答
524 浏览

c++ - Qt:设计QtcpSocket连接多个TcpServer?

我想设计一个带有 QTcpSocket 的应用程序来连接到多个服务器并从每个服务器获取数据并将其显示在 GUI 上。

具有多个客户端的 QTcpServer 非常简单。但我需要以非常相似的方式设计我的应用程序。

在我的应用程序中,我需要连接到 40 个设备(服务器)。这些设备通过某些来源获取数据,并将这些数据传输到我的应用程序。在我的应用程序中,从单个服务器接收到的数据将被拆分并以规定的格式显示,以及服务器详细信息,例如 IP 地址端口号等。

单套接字服务器通信已完成,但我想知道通过单套接字连接到多个服务器的有效方法?

谁能指导我连接到多个 TcpServer 并从每个服务器接收数据的有效方法?

任何想法,建议,链接都是最受欢迎的。

提前致谢。

0 投票
0 回答
748 浏览

c++ - linux下qt tcp连接

我正在尝试在 QT 上创建一个客户端-服务器应用程序。我对算法没有任何问题。QT没问题。一切正常,但仅在 Windows 下。在Linux下运行应用时,客户端成功连接服务端,成功写入数据socket->write(myDataArray) = myDataArray.length(),但是服务端没有处理readyRead信号。此问题仅在 Linux 下出现。有人对发生的事情有任何想法吗?我使用 Ubuntu 14.04 和 Windows 7,qt 版本 5.3.2。


客户端代码:


服务器代码: