QT编写TCP的问题
TCP套接字:主机(IP+端口) 和 服务器(IP+端口) 进行通讯,需要中间的一个锁套进行 啮合,这个锁套就是套接字的作用。
其中套接字的使用必须运用数数据流配合才可以。
第一种:不用套接字+不用数据流操作
//客户端发送信息
void client::clientSendMessage ()
{
QByteArray data;
data.append(ui->clientMessagelineEdit->text());
tcp->write(data);
ui->messagetextBrowser->insertPlainText (tr("send message: %1 \n").arg (QString(data)));
}
第二种:使用套接字+使用数据流
void MainWindow::sendMessage()
{
QByteArray block;//暂时存储我们需要发送的数据
QDataStream out(&block,QIODevice::WriteOnly);//TCP必须和数据流一起使用
out.setVersion(QDataStream::Qt_5_7);//设置数据流的版本(服务器和主机版本一定相同)
out<<(quint16);//强制转化,quint16=unsigned short,向头部添加0为了开辟空间存放文件大小
out << tr("");
out.device()->seek();//向头添加数据,类似链表
out <<(quint16)(block.size()-sizeof(quint16));//文件大小
//*************利用“套接字”进行服务器和主机的连接和通讯****************//
QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
connect(clientConnection,SIGNAL(disconnected()),//断开连接同时删除套接字
clientConnection,SLOT(deleteLater()));
clientConnection->write(block);
clientConnection->disconnectFromHost();//此函数关闭套接字触发disconnected()函数,接着由上面连接触发deleteLater()删除套接字
ui->label_3->setText("successful sendmessage");
}
注释:1.校验的TCP(文件大小+文件信息+文件名+文件),通用的TCP(文件)。当写通用的时候应写后者,当自己使用时可以写前者保证数据准确性,但是一定保证接收端程序也应按照这个格式接受。
2.通用的软件没有数据流和套接字,自己写的软件都可以加。有数据流的TCP和没有数据流的TCP不能进行数据的传送!!!
QT编写TCP的问题的更多相关文章
- QT编写TCP入门+简单的实际项目(附源程序)
我个人感觉学习QT不需要那么深入的了解,因为我就是编写一下界面来实现理想的功能而已,我不是靠这个吃饭,当然以后要是从事这个方向那就好好深入底层好好学了. 学习QT的TCP:第一步:去百度看看TCP的介 ...
- Qt编写图片及视频TCP/UDP网络传输
一.前言 很多年前就做过类似的项目,无非就是将本地的图片上传到服务器,就这么简单,其实用http的post上传比较简单容易,无需自定义协议,直接设置好二进制数据即可,而采用TCP或者UDP通信的话,必 ...
- QT创建TCP Socket通信
最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO.为了测试是否能与VS2012下的程序进行通信,在VS2012下建立一个客户端程序,进行通信测试,发现可以 ...
- Qt编写的开源帖子集合(懒人专用)
回顾自己学习Qt以来九年了,在这九年多时间里面,从本论坛学习不到不少的东西,今天特意整了一下自己开源过的资源的帖子,整理一起方便大家直接跳转下载,不统计不知道,一统计吓一跳,不知不觉开源了这么多代码, ...
- Qt基于tcp协议网络编程
基于Qt网络编程: 基于tcp协议 c/s模式编程 所需要的类:QTcpServer QTcpSocket 利用qt基于tcp协议编写c/s模式程序: 两个类中的信号: QTcpServer : ne ...
- Qt编写项目作品大全(自定义控件+输入法+大屏电子看板+视频监控+楼宇对讲+气体安全等)
一.自定义控件大全 (一).控件介绍 超过160个精美控件,涵盖了各种仪表盘.进度条.进度球.指南针.曲线图.标尺.温度计.导航条.导航栏,flatui.高亮按钮.滑动选择器.农历等.远超qwt集成的 ...
- Qt编写控件属性设计器8-网络采集
一.前言 上一篇文章已经打通了数据源之一的串口采集,这次要说的是网络采集,网络通信目前用的最多的是三种,TCP/UDP/HTTP,其中tcp通信又包括了客户端服务端两种,tcp通信才用了多次握手机制不 ...
- Qt编写自定义控件二动画按钮
现在的web发展越来越快,很多流行的布局样式,都是从web开始的,写惯了Qt widgets 项目,很多时候想改进一下现有的人机交互,尤其是在现有的按钮上加一些动画的效果,例如鼠标移上去变大,移开还原 ...
- Qt编写可换肤的中文双拼汉字输入法
时间过得真快,不知不觉已到2015年,农历春节一眨眼就过去了,端正状态收拾心情整装待发出发. 曾经有段时间,我有一个很执着的梦想,我要导演出一部空前绝后的巨幕.不过现实无情地碾碎我的梦想,也同时将我推 ...
随机推荐
- Cordova+Angularjs+Ionic 混合开发入门讲解
作为一名学习Android开发的学生,对于移动开发的发展趋势颇为关注,大家都知道,现在原生的移动开发在企业上基本很少使用了,大部分企业为了降低成本,选择了webapp,hybrid(混合开发)这两种模 ...
- overflow标签
有时父标签设置了固定的宽高,但子标签把父标签给撑开了,就要在父标签里加一个overflow标签,等于hidden超出的地方隐藏,等于auto超出的地方隐藏,并且多个滚动条 <div style= ...
- java经典5种 FlowLayout 、BorderLayout、GridLayout、GridBagLayout、CardLayout布局
Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式.这是由于组件的最佳大小 往往是与平台相 ...
- vue中为对象添加值的问题
demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- DS图遍历--广度优先搜索
题目描述 代码框架如下: 输入 第一行输入t,表示有t个测试实例 第二行输入n,表示第1个图有n个结点 第三行起,每行输入邻接矩阵的一行,以此类推输入n行 第i个结点与其他结点如果相连则为1,无连接则 ...
- JS和AS交互
这个话题在网上应该说很好找,有很多这方面的资料.比者也看过一些,不过大部分都是AS2与JS进行交互.很少提到AS3,即使有,也让人感觉浅尝辄止.很多东西并没有介绍的太清楚.所有笔者萌生了写这样一篇教程 ...
- 【git】之分支管理
git是鼓励开发者使用分支,尤其是在大型开发项目中,分支是非常重要的!这里简单介绍一下分支的操作! 1.创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前 ...
- VMware中四种网络连接模式的区别
安装好VMwareWorkstations之后,进行虚拟机网络配置时有四种网络连接方式,桥接.仅主机.NAT.LAN区段. 之所以有不同的模式,在我看来是为了满足不同的网络需求,总的来说:桥接.NAT ...
- SQL Server的分页优化及Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- P1033自由落体
传送 杯具wa,惨痛的教训————别写一些情况多到要打表的判断,写着写着就wa了 这个题,我主要死在判断上了 第一遍20分的思路:看小车此时跨越几个整数点.因为我求出了此时小车的车头坐标和车尾坐标.然 ...