嵌入式-基于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();
}
经验分享 程序员 微信小程序 职场和发展