qt的tcp通信 服务器和客户端读写数据的问题

qt的tcp通信 服务器和客户端读写数据的问题,第1张

首先回答第一个问题,读和写可以有多种实现方式,用write和read只是其中一种,前面一个函数中的 clientConnection->write(block)是调用了QTcpSocket 类中的write方丛敬法来迟陵实现,如果你想不用此方法调用类中的read和write方法,就是你问的第二个问题,in和out的作用,in和out在这里将对socket中的报文收发变为数据流的形式来 *** 作,QDataStream in(tcpSocket)比如这一句是将tcpSocket这个连接的实例对象作为一个文件描述符传递给QDataStream,然后 in >>码郑戚 blockSize这句话实现的就是相当于read的 *** 作,就是将数据流读出来。这个 out <<(quint16)(block.size() - sizeof(quint16))是写入。实际上对诸如串口收发,读写文件,socket通信等等,用C语言来写,抽象出来都是对文件描述符进行 *** 作,都可以用write和read来做,所以,实际上,第一种方法和第二种方法是一样的,就看你选择什么样的方法了,第三个问题可参考out <<(quint16)(block.size() - sizeof(quint16))这样的方法在收到数据以后把数据发出去。

1、Qt 作为一个通用开发库,提供了跨平台的文件 *** 作能力。文件 *** 作是应用程序必不可少的部分。

2、Qt5增加了QFileDevice类。途中所涉及的类及其用途简要说明如下:

· QFlie:访问本地文件或者嵌入资源;

· QTemporaryFile:创建和访问本地文件系统的临时文件;

· QBuffer:读写QByteArray;

· QProcess:运行外部程序,处理进程间通讯;

· QTcpSocket:TCP协议网络数据传输;

· QUdpSocket:传输野指 UDP 报文;

· QSslSocket:使用 SSL/TLS 传输数据;

· QFileDevice:新增加的类,提供了有关文件 *** 作的通用实现。

3、这其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。所谓“顺序访问”,是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节;QFile、QTemporaryFile和QBuffer是随机访问设备,可以访问任意位置任意次数,还可以使用QIODevice::seek()函数来重新定位文件访问位置指针。

4、QFile主要提供了有关文件的各种 *** 作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice提供的read()、毕脊皮readLine()、readAll()以及write()这样的函数。值得注意的是,有关文件本身的信息手差,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取,而不是自己分析文件路径字符串。

5、举个例子,打开文件时,需要参数指定打开文件的模式:

ConstantValue Description

QIODevice::NotOpen 0x0000 The device is not open.

QIODevice::ReadOnly 0x0001 The device is open for reading.

QIODevice::WriteOnly0x0002 The device is open for writing.

QIODevice::ReadWriteReadOnly | WriteOnlyThe device is open for reading and writing.

QIODevice::Append 0x0004 The device is opened in append mode, so that all data is written to the end of the file.

QIODevice::Truncate 0x0008 If possible, the device is truncated before it is opened. All earlier contents of the device are lost.

QIODevice::Text 0x0010 When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32.QIODevice::Unbuffered 0x0020 Any buffer in the device is bypassed.

步骤如下:

1、开启服务器,客户端进行连接。

2、客户端向服务器上传文件,也可以下载服务器文件到客户端本地。

Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非旅芹纤拆仿GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObjectCompilermoc))以及一些宏,易于扩展,允许组件编程。首中


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8225309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存