问题标签 [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.
c++ - QThread 中的 QTcpSocket 将 commitTransaction,但是当调用 Write 时“无法为位于不同线程中的父级创建子级”。
免责声明:我对 Qt 和任何围绕线程和网络的编程都比较陌生。我还采用了很多来自 Qt 示例、API 和其他在线示例的代码。
所有代码都可以在 GitHub 上找到。这段代码相对简单,因为它可以减去剥离 GUI。我认为以这种方式提供它也会有所帮助,而不是仅仅粘贴下面的代码。
我想使用并相信我需要使用线程,因为我需要多个客户端向服务器发送请求,服务器运行一些 SQL 代码,然后将结果吐回客户端(基本上派生一个 MySQL 服务器,但具体到什么我在做)。不过现在,我只是在努力学习这一切的运作方式。
话虽如此,正如标题所述。我的客户端可以连接到服务器,服务器设置线程,并将通过 readReady 接收数据(字符串)。读入数据后,现在我只是想将其回显给客户端。它会这样做,但只有一次。然后它吐出:
除非我让客户端重新连接,否则我无法向服务器发送任何进一步的数据,然后在发送数据后,它将完成其工作,但随后会吐出相同的错误并停止运行。我尝试了很多不同的东西,但似乎无法解决问题。我什至尝试按照 API 中的建议为此设置一个 SIGNAL/SLOT:
重要的是要记住 QThread 实例存在于实例化它的旧线程中,而不是调用 run() 的新线程中。这意味着 QThread 的所有排队槽都将在旧线程中执行。因此,希望在新线程中调用槽的开发人员必须使用工作对象方法;不应将新插槽直接实现到子类 QThread 中。
无论如何,任何帮助将不胜感激!我的代码如下..
服务器
服务器线程.cpp
因此,ServerThread.cpp
在调用 echoData 时,即出现错误并且 Socket 停止运行。
任何和所有的帮助将不胜感激。我知道还有一些关于线程的“不能为...创建孩子”的其他帖子。但我没有发现其中任何一个有帮助。我确实觉得有趣但不理解的一件事可能是使用 moveToThread() 但对此有很多不同的评论。
我最好通过代码示例和解释来学习,而不是仅仅通过解释或指向 API 的指针。谢谢!
python - PyQt5:在客户端和服务器之间发送和接收消息
我正在尝试创建一个服务器和客户端来发送和接收消息。我的问题是在客户端和服务器之间发送和接收。
客户端.py:
服务器.py:
我已经搜索过,但我很困惑。我找到了一些代码,但我不明白它到底做了什么:
multithreading - Qt - 如何将 QTCPSocket 添加到 QTCPServer 的挂起连接
我有一个简单的多线程应用程序,其工作方式类似于 Qt 网站上的示例 “Threaded Fortune Server Example”。
当我的QTCPServer接收到传入连接时,我创建一个QRunnable任务,传递socketDescriptor然后将其提交给QThreadPool:
然后在 Task 方法中run()
创建套接字:
但是,我 从 Qt Doc中阅读了关于QTCPServer的incomingConnection方法的那些注释
注意:如果在重新实现此方法时创建了另一个套接字,则需要通过调用 addPendingConnection() 将其添加到 Pending Connections 机制中。
注意:如果您想在另一个线程中将传入连接作为新的 QTcpSocket 对象处理,您必须将 socketDescriptor 传递给另一个线程并在那里创建 QTcpSocket 对象并使用其 setSocketDescriptor() 方法。
所以,我的问题是:
- 如何将另一个线程创建的套接字添加到服务器的挂起连接?
- 这是一个必要的操作吗?
谢谢,
qt - QTcpSocket 连接导致 UnknownSocketError 错误字符串“UnknownError”
问题
我无法获得有关此错误的任何进一步信息:
QT QAbstractSocket::SocketError仅提供了发生某些错误的基本解释
发生不明错误。
枚举值 = -1
调用 QTcpSocket::errorString() 可以提供:
SO上有一个关于此的问题,但没有提供解决问题的真正解决方案(以及我所做的建议)
我完全不知道如何进一步处理这个错误,因为每次我的客户端尝试连接(在调用connectToHost()之后)我都会收到这个错误。
代码:
//服务器
我还继续明确地将服务器 ip 设置为 localhost 和端口 5000,但没有成功。
//客户
客户端调试输出:
有什么建议吗?
ps 我找了一些堆栈跟踪/回溯选项,没有找到任何东西 - 如果有,请发表评论
c++ - 写入 QTcpSocket 并不总是在相反的 QTcpSocket 上发出 readyRead 信号
在过去的 5 天里,我一直坚持这一点,我不知道如何继续。
概述:
我有一个与图书馆client UI
交互的data handler
图书馆,data handler
图书馆利用network manager
图书馆,这是我的问题所在。
更多信息
QTcpServer
首先,QT 为(Fortune Server)和QTcpSocket
(Fortune Client )之间的交互提供了一个基本示例。
因此,我将这段代码实现为我自己的一个非常基本的示例,它就像一个魅力,没有任何问题。
快速说明:
服务器应用程序运行,点击start server
,然后在客户端,在字段中输入文本并点击connect to server
显示文本,简单!
问题:
将上面的代码实现到我的network manager
库中,不会触发QTcpSocket::readyRead()
上面的服务器应用程序。
它连接到server
,QTcpServer::newConnection()
正如预期的那样被触发,之后立即client
写入套接字但readyRead()
服务器套接字上的 不会触发,但是在给出的示例中它会触发。
注意:在这个应用示例和我当前的应用中使用的和相同,并且服务器也在port
运行
。ip address
server-client
更多信息:
从上面的代码中,我直接从客户端复制过来。只有两件事被改变/修改:
- 发送到服务器的字符串
- 方法的返回类型
这被复制到我的network mannager ::write()
方法中。运行我的应用程序时,实例QMainWindow
通过data handler
类传递并创建我的network manager
类的实例,该实例继承QObject
并实现Q_OBJECT
宏。
代码示例:
//client_UI
类(片段):
//data_manager
库(片段)
//netman
库(片段)
//cpp
结论:
客户端的核心代码已经完全实现了,但是我不明白为什么会出现这个错误。
我将非常感谢帮助/建议!
c++ - 从 Qt 5.7 切换到 Qt 5.8 - “代理类型对此操作无效”
我正在尝试使用 Qt 5.8 重新编译与 Qt 5.7 配合良好的网络应用程序。但是,使用 Qt 5.8,服务器无法listen()
:
并且返回的错误是:
此操作的代理类型无效
我确实在受代理保护的公司网络上运行该应用程序,但是在以前的 Qt 版本中,从来不需要进行任何类型的设置来解决这个问题。我以前从未见过listen()
命令失败。
Qt 5.8 中发生了什么变化或如何解释这一点的任何想法?
编辑:
在整个网络被代理的情况下,在本地域上通信不需要代理,并且设置NO_PROXY
环境变量以避免代理本地连接。
c++ - 我可以在不同的网络中连接两个 QTcpSocket 吗?
我可以仅在本地计算机之间连接还是可以连接到另一个网络?
c++ - QTcpSocket::readAll() 为空
我是 Qt 新手,有点挣扎。我正在尝试使用 QTcpSocket 将字符串从客户端发送到服务器。
客户端:
服务器端:
在服务器端程序readyRead()
在接收到数据时进入,但是块为空,虽然在客户端tSock->write(block)
调用时块不为空......似乎是哪里的问题?我将不胜感激任何帮助。谢谢!
c++ - QtcpServer:Qt如何获取python字符串来标记
大家好,我使用 python 向 qt 发送字符串,但我不知道如何在标签上显示字符串,谁能帮助我???我的 mainwindow.cpp 是
每次我尝试放置 socket->readall() 时它都会在我调试时崩溃
c++ - QTcpServer 应用程序中 Qt C++ 中的插槽和信号
QTcpServer 应用程序中有一个关于 Qt C++ 中的槽和信号的问题。我对插槽和信号方法不是很熟悉。所以......问题是服务器应用程序上的客户端套接字插槽根本没有被调用。我认为我使用了错误参数的连接函数。
我在这里使用连接功能:
...但是这些连接功能无法正常工作。客户端正在连接,onNewConnection 被调用,但来自客户端套接字的事件(插槽)不会出现(readyRead() 等)。服务器能够向客户端发送消息。谢谢。