嵌入式-基于qt的tcp/ip实现
qt聊天界面的实现
通过tcpip协议进行网络通信,通过qt框架进行搭建,有两个部分,客户端和服务器端,这里的qt设计是通过ui直接绘图(试了一下直接cpp,对于布局要求太高了)
首先要下载qtcreator
创建服务器端
首先进行新建工程
*
-
然后点击上面那个new project 这里一定要点denerate form 然后工程就创建完成了
设计界面
-
在左面分别选取textedit两个,buttons两个,还有一个弹簧,放置在界面中 然后点击左上角的
就设计好了,上面的聊天框用于显示接收的信息,下面用于自己发信息,两个按钮分别是关闭和发送
然后对每个对象进行分别命名和其对应属性的改写
编写源码和头文件
改写工程文件
-
点开项目文件,在最后加上一个
QT += core gui network
改写头文件
-
先添加对应套接字的头文件 然后创建两个指针,指针的话要动态分配空间
改写源代码
-
点开widget
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //监听套接字,指定父对象自动回收空间,自动回收空间 tcpSer = new QTcpServer(this); //对应的ip和端口 tcpSer->listen(QHostAddress::Any,8888); //用lamda表达式 connect(tcpSer,&QTcpServer::newConnection, [=]() { tcpsoc = tcpSer->nextPendingConnection(); QString ip = tcpsoc->peerAddress().toString(); qint16 port = tcpsoc->peerPort(); QString temp = QString("[]:成功链接").arg(ip).arg(port); ui->read->setText(temp); } ); //通信套接字 tcpsoc = new QTcpSocket(this); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { //获取链接内容然后发送 QString str = ui->write->toPlainText(); tcpsoc->write(str.toUtf8().data()); } void Widget::on_send_clicked() { close(); }