概述
转自:http://blog.csdn.net/rl529014/article/details/52884845
下载地址:http://download.csdn.net/detail/rl529014/9660330
效果图:
原理:
用到的库:QTcpServer,QTcpServer,QHostAddress,QtNetwork。
在服务端下方的行编辑器输入123,点击“发送”,服务端的消息框和客户端的消息框同时显示123,以及发送和接收的时间;
原理分析:
用到的类(库):QTcpServer,QTcpServer,QHostAddress,QtNetwork。
实现上述过程的关键步骤;
服务端:
开放地址,准备接收数据:
首先,服务端利用listen方法建立主机地址,以及分配端口号6666:
tcpServer->listen(QHostAddress::Any,6666);
服务端发送下一个悬而未决的连接:
tcpSocket = tcpServer->nextPendingConnection();
接收数据
tcpSocket发送准备读的信号,本对象开始槽接收数据onReciveData;
connect(tcpSocket,SIGNAL(readyRead()),SLOT(onReciveData()));
在onReciveData中,tcpSocket通过方法readAll读取socket中的内容(刚才服务端写入到socket中的值);并将内容赋值给字符串data,并将接收到内容显示在消息框:
QString data = tcpSocket->readAll();
...
ui->textEdit->setText(mChat);
发送,向socket中写数据:
在服务端,点击“发送”,就会槽sendMessage:
connect(ui->sendBtn,SIGNAL(clicked(bool)),SLOT(sendMessage()));
在行编辑器写好了发送信息sendMessage后,会首先在服务端显示出来,:
将上面的数组mChat显示在指定的文本编辑框;
ui->textEdit->setText(mChat);
通过tcpSocket的写方法,将发送的数据写到socket中;(......)
tcpSocket->write(sendMessage);
客户端:
建立连接:
取消已有的连接
tcpSocket->abort();
tcpsocket开始方法:连接到主机(地址是:127.0.0.1,端口号:6666)
tcpSocket->connectToHost("127.0.0.1",6666);
接收数据:
将tcpSocket从数据中读取到的数据存到 QString类的data中;
QString data = tcpSocket->readAll();
显示该字节数组(因为是QT自身封装类,可以直接显示)
ui->textEdit->setText(mChat);
发送数据:
点击按键,发送信息:
connect(ui->sendBtn,SIGNAL(clicked(bool)),SLOT(onSendMessage()));
将输入框中的内容写入到字符串textEdit中
QString textEdit = ui->lineEdit->text();
tcpSocket通过写write,将字节数组sendMessage发送出去
tcpSocket->write(sendMessage);
源码:见链接:http://download.csdn.net/detail/rl529014/9660330
最后
以上就是超帅发卡为你收集整理的QT类学习系列(5) - QTcpSocket的全部内容,希望文章能够帮你解决QT类学习系列(5) - QTcpSocket所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复