• 大小: 6KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: qt  tcp/ip  

资源简介

使用Qt中的tcp协议,构建服务器和客户端的界面,实现交互通信,如聊天功能,此为一个简单的例子,但实现了所有的基本功能,富有参考性

资源截图

代码片段和文件信息

#include “clientwidget.h“
#include “ui_clientwidget.h“
#include 
#include 
#include 
#include 

ClientWidget::ClientWidget(QWidget *parent) :
    QWidget(parent)
    ui(new Ui::ClientWidget)
{
    ui->setupUi(this);
    this->setWindowtitle(“客户端“);
    this->resize(500300);
    this->setMinimumSize(500300);
    tcpSocket = new QTcpSocket(this);
    connect(tcpSocket&QTcpSocket::connected
            [=]()
            {
                ui->textEditRead->setText(“与服务器成功连接“);
                qDebug() << “连接成功“;

            }
            );
    connect(tcpSocket&QTcpSocket::readyRead
            [=]()
            {
                QByteArray array = tcpSocket->readAll();
                ui->textEditRead->append(array);
            }
            );
    ui->ButtonSend->setFocus();
    ui->ButtonSend->setDefault(true);
    //ui->ButtonSend->setShortcut(Qt::Key_Enter|Qt::Key_Return);
    ui->textEditWrite->installEventFilter(this);//设置完后自动调用其eventFilter函数
}

ClientWidget::~ClientWidget()
{
    delete ui;
}

void ClientWidget::on_ButtonConnect_clicked()
{
    //获取服务器端口和ip
    QString ip = ui->lineEditIp->text();
    qint16 port = ui->lineEditPort->text().toInt();
    //与服务器进行连接
    tcpSocket->connectToHost(QHostAddress(ip)port);
}

void ClientWidget::on_ButtonSend_clicked()
{
    //获取编辑框内容
    QTime cur_time = QTime::currentTime();
    QString str = ui->textEditWrite->toPlainText();
    QString time_info = cur_time.toString(“hh:mm:ss“);
    QString str_info = QString(“客户端: %1 [%2]“).arg(str).arg(time_info);
    //发送数据
    tcpSocket->write(str_info.toUtf8().data());
    ui->textEditWrite->clear();

    //ui->textEditWrite->setFocus();
}



void ClientWidget::on_ButtonClose_clicked()
{
    //主动断开连接
    tcpSocket->disconnectFromHost();
    ui->textEditRead->setText(“与服务器断开连接!“);
    tcpSocket->close();
}

bool ClientWidget::eventFilter(Qobject *target QEvent *event)
{
    if(target == ui->textEditWrite)
        {
            if(event->type() == QEvent::KeyPress)//回车键
            {
                 QKeyEvent *k = static_cast(event);

                 if(k->key() == Qt::Key_Return)
                 {
                     on_ButtonSend_clicked();
                     return true;
                 }
            }
        }
        return QWidget::eventFilter(targetevent);

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-02-19 16:43  TCP打包\DemoText10_TCPServer_01\
     文件        2603  2020-02-19 12:19  TCP打包\DemoText10_TCPServer_01\clientwidget.cpp
     文件         605  2020-02-19 11:57  TCP打包\DemoText10_TCPServer_01\clientwidget.h
     文件        2432  2019-08-25 15:28  TCP打包\DemoText10_TCPServer_01\clientwidget.ui
     文件        1356  2019-08-25 15:14  TCP打包\DemoText10_TCPServer_01\DemoText10_TCPServer_01.pro
     文件         252  2019-08-25 15:37  TCP打包\DemoText10_TCPServer_01\main.cpp
     文件        3522  2020-02-19 12:19  TCP打包\DemoText10_TCPServer_01\serverwidget.cpp
     文件         699  2020-02-19 12:00  TCP打包\DemoText10_TCPServer_01\serverwidget.h
     文件        1532  2019-08-25 15:55  TCP打包\DemoText10_TCPServer_01\serverwidget.ui

评论

共有 条评论