jjzjj

QTcpSocket

全部标签

C++ Qt开发:QTcpSocket网络通信组件

Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QTcpSocket组件实现基于TCP的网络通信功能。QTcpSocket和QTcpServer是Qt中用于实现基于TCP(TransmissionControlProtocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。以下是QTcpSocket类的一些常用函数:函数描述QTcpSocket()构造

c++ - Qt的QTcpSocket ReadyRead信号的实现

我想了解Qt对QTcpSocket的ReadyRead信号的实现。它在Windows和Linux上是如何实现的?使用select()、poll()、epoll()、SIGIO或任何其他方式?QTcpSocket如何知道何时发出ReadyRead信号? 最佳答案 由于Qt是开源的,你可以直接查看源代码,自己看看。他们甚至拥有它postedonline.操作系统特定部分(我认为)在qnativesocketengine_unix.cpp中实现在qnativesocketengine_win.cpp.

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

我有两个项目,一个用于服务器,一个用于客户端。在客户端,当我要发送数据时,我创建一个QTcpSocket成员变量,然后使用write()方法发送数据。在服务器上,我收到了信息,但我想把信息发回给客户端。具体来说,我正在尝试验证用户,所以我将他们在客户端登录时使用的用户名和密码发送到服务器,我想根据保存在服务器上的数据库检查该数据,然后发送信息返回给客户以验证信息是否正确。我的问题是我不知道如何从服务器向客户端发送信息。在服务器端,我有两个成员变量,QTcpServerserver;和QTcpSocket*client;。我查看了关于QTcpServer的文档,据我所知,它没有等同于wr

c++ - Qt QIODevice::write/QTcpSocket::write 和写入的字节

我们对QIODevice::write的一般行为和具体的QTcpSocket实现感到非常困惑。有一个similarquestion已经,但答案并不令人满意。主要的混淆源于分别提到的bytesWritten信号和waitForBytesWritten方法。这两个似乎表示从QIODevice使用的缓冲区写入实际底层设备的字节(必须有这样的缓冲区,否则该方法没有多大意义)。那么问题是,如果QIODevice::write返回的数字与这个数字相对应,或者如果在那种情况下它表示存储的字节数内部缓冲区,而不是写入底层设备的字节。如果返回的数字指示写入内部缓冲区的字节数,我们将需要采用如下模式来确保

c++ - 通过 QTimer 和 QTcpSocket 正确使用 QThread 和 moveToThread

从阅读这篇blog,这个blog和其他一些,子类化QThread是不好的做法。所以我尝试应用这个方法。但我的问题是类中有一个QTimer和一个QTcpSocket我想移动到另一个线程。突然间,它并不像所使用的示例那么简单。:(QThreadm_commsThread;m_pICommsHandler=newCommsHandlerIP();m_pICommsHandler->moveToThread(&m_commsThread);m_commsThread.start();这里是CommsHandlerIP类,不包括方法。classCommsHandlerIP:publicQObje

c++ - 读取 QTcpSocket

我有一个与UNIXC++套接字的套接字连接,连接后,我有一个逐字节读取的循环,直到我获得完整的消息。我知道我将要接收的消息的前两个字节及其长度(15个字节)。所以函数看起来像:boolmastControl::findPacket(intsockfd,st_messageMastToPc*messageReceived,bool*connected){intn=0;boolmessageFound=false;char*buffer=(char*)messageReceived;unsignedintpos=0;while(((n=read(sockfd,&(buffer[pos]),

c++ - 获取远程主机IP地址QTcpServer

我正在使用Qt使用QTcpServer创建TCP服务器。每次客户端连接到服务器时,我想知道远程主机的IP地址和端口号。我尝试搜索文档,但找不到关于此主题的任何信息。我知道应该有办法,只是我想不通。请帮忙。 最佳答案 QTcpServer不会直接在传入连接上告诉您地址/端口,但您可以通过从QTcpServer::nextPendingConnection()获取连接的QTcpSocket然后使用QTcpSocket的peerAddress()和peerPort()方法来获取它。 关于c++

Qt基础之三十一:Qt网络编程(TCP&UDP)

Qt网络模块(Network)提供了编写TCP/IP客户端和服务器的类。该模块不仅提供了低级(low-level)类,如QTcpSocket、QTcpServer和QUdpSocket,还提供了高级(hight-level)类,如QNetworkRequest、QNetworkReply和QNetworkAccessManager。一.基于QTcpSocket和QTcpServer的TCP通信TCP(TransmissionControlProtocol)是大多数Internet协议(包括HTTP和FTP)用于数据传输的一种低级(low-level)网络协议。它是一种可靠的、面向流的、面向连接

c++ - 如何读取QTcpSocket中的完整数据?

现在服务器(用java实现)会向我发送一些流数据,我的代码如下:connect(socket,SIGNAL(readyRead()),this,SLOT(read_from_server()));在read_from_server()中:{while(socket->bytesAvailable()){QStringtemp=socket->readAll();}}但我发现即使服务器给我发送了一个只有几个字符的字符串,数据也被截断了,我的函数被调用了两次,因此temp是我想要的永远不完整的数据。如果服务器向我发送更长的字符串,我的函数可能会被调用三次或更多次,这让我很难知道数据何时完全

c++ - QTcpSocket 客户端自动重连

我正在尝试编写一段代码,定期尝试使用QTcpSocket连接到服务器,直到服务器启动并准备就绪。客户端还应在服务器关闭时自动并定期尝试重新连接,直到服务器再次启动或用户手动关闭程序。我所做的是订阅QTcpSocket的连接信号和错误信号。当我捕捉到错误信号时,我基本上会再次调用connectToHost方法。我的代码会定期尝试连接到主机,直到服务器准备就绪(这部分工作正常)。但是,问题是当服务器关闭时它永远无法重新连接。当连接断开时,我会按预期收到RemoteHostClosedError。但是,在同一方法(我捕获RemoteHostClosedError的地方)中再次调用connec