QT编写TCP的问题
2024-08-30 06:29:46
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不能进行数据的传送!!!
最新文章
- awk(1)-简述
- [Android] 查看Android中的AlarmManager事件
- Codeforces Round #188 (Div. 2) B. Strings of Power 水题
- bzoj1057,poj3250
- android常见错误-The container &#39;Android Dependencies&#39; references non existing library
- [O] SQLite数据库报错:no such column
- 设计模式(五):PROTOTYPE原型模式 -- 创建型模式
- android sdk manager无法更新
- C51编译器扩展的关键词 &; C51中断函数的写法
- shell-改变分隔符
- oracle10g遇到ORA-00257归档程序错误,在释放之前仅限于内部连接
- js继承之原型链方式实现
- Python 字符串字典内置函数&;方法
- C# 第十版
- HDFS笔记(二)
- Celery分布式任务队列快速入门
- centos7 启动mysql
- Xrdp vnc password failed
- WinForm下的TabControl控件
- jsp访问java变量
热门文章
- 中文自然语言处理工具HanLP源码包的下载使用记录
- RedHat7.3创建本地yum源
- Kafka使用log.retention.hours改变消息端的消息保存时间
- vivado各版本的区别
- DLL的晚绑定与早绑定
- TextBox限制输入字母、数字、退格键
- 纯css3实现文字间歇滚动效果
- 黄聪:PHP发送邮件出现Connection: opening to ssl://的解决办法
- java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码
- uoj#119. 【UR #8】决战圆锥曲线