7.11作业

这篇具有很好参考价值的文章主要介绍了7.11作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

tcp服务器和客户端

服务器:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    server=new QTcpServer(this);

}

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


void Widget::on_ptn_open_clicked()
{
    quint16 port=ui->lineEdit_port->text().toUInt();

   if(server->listen(QHostAddress::Any,port)){
       QMessageBox::information(this,"","打开成功");
   }else{
       QMessageBox::critical(this,"","打开失败");
       return;
   }

   connect(server,&QTcpServer::newConnection,this,&Widget::newconnection_slot);
}

void Widget::newconnection_slot()
{
    QTcpSocket *socket=server->nextPendingConnection();
    clientVector.push_back(socket);

    connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
}

void Widget::readyRead_slot()
{
    for(int i=0;i<clientVector.size();i++){
        if(clientVector[i]->state()==0){
            clientVector.remove(i);
        }
    }

    for(int i=0;i<clientVector.size();i++){
        if(clientVector[i]->bytesAvailable()!=0){
            QByteArray msg=clientVector[i]->readAll();
            ui->listWidget_show->addItem(QString::fromLocal8Bit(msg));

            for(int j=0;j<clientVector.size();j++){
                clientVector[j]->write(msg);
            }
        }
    }
}

客户端:文章来源地址https://www.toymoban.com/news/detail-550013.html

#include "second.h"
#include "ui_second.h"

Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);

    connect(socket,&QTcpSocket::connected,this,&Second::connected_slot);
    connect(socket,&QTcpSocket::disconnected,this,&Second::disconnected_slot);

    connect(socket,&QTcpSocket::readyRead,this,&Second::readyRead_slot);

}

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

void Second::jump_slot(){
    this->show();
}

void Second::on_ptn_connect_clicked()
{
    QString ip=ui->lineEdit_ip->text();
    quint16 port=ui->lineEdit_port->text().toUInt();
    userName=ui->lineEdit_userName->text();

    if(ui->ptn_connect->text()=="连接服务器"){
        socket->connectToHost(ip,port);
    }else{
        QString msg=userName+":离开聊天室";
        socket->write(msg.toLocal8Bit());
        socket->disconnectFromHost();

    }
}

void Second::connected_slot()
{
    ui->ptn_connect->setText("断开服务器");
    QMessageBox::information(this,"","连接成功");

    QString msg=userName+":进入聊天室";
    socket->write(msg.toLocal8Bit());
}

void Second::disconnected_slot()
{
    QMessageBox::information(this,"","您已断开连接");
    ui->ptn_connect->setText("断开服务器");
}

void Second::readyRead_slot()
{
    if(socket->bytesAvailable()!=0){
        QString msg=QString::fromLocal8Bit(socket->readAll());
        ui->listWidget_show->addItem(msg);
    }
}

void Second::on_ptn_sendmsg_clicked()
{
    QString msg=ui->lineEdit_sendmsg->text();
    socket->write(msg.toLocal8Bit());
    ui->lineEdit_sendmsg->clear();
}

到了这里,关于7.11作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 作业11.27

    1.  2. 2.   3.  

    2024年02月04日
    浏览(33)
  • 12月11日作业

    完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示登录成功,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配,弹出错误对话框,给出信息\\\"账号和密码不匹配,是否重新登录\\\";并提供两个按钮Yes/No,用

    2024年02月05日
    浏览(40)
  • 11-短作业优先算法与思想

    追求最少的平均等待时间,最少的平均周转时间,最少的平均平均带权周转时间 1.最短的作业/进程优先得到服务(所谓\\\"最短\\\",是指要求服务时间最短) 即用于作业调度,也可以用于进程调度 用于进程调度时候,称为\\\"短进程优先(SPF Shortest Process First算法)\\\" 1.SJF和SPF是非抢占式算

    2024年02月06日
    浏览(35)
  • 2022.3.11 MATLAB课程作业

    问题描述: 分别使用Matlab的ezplot和isosurface函数绘制附件所示函数图形; ezplot心形函数: 只有这一句,由于这个编辑器不支持MATLAB语法,自身又有语法规则,只能使用别的方法粘贴过来 中间用单引号引起来的就是函数的解析式,后面中括号里面表示的是 x 的范围(可写可不

    2023年04月09日
    浏览(31)
  • QT作业4

    实现一个闹钟,当输入时间后,点击启动到达时间后循环播报三遍,便签内容 头文件: 源文件: 主函数文件: 运行结果: 思维导图:

    2024年02月04日
    浏览(37)
  • QT周五作业

    题目:实现简单水果的价格重量计算 点击一次水果重量+1  自动计算总价 代码: widget.h widget.cpp

    2024年02月02日
    浏览(42)
  • 7.26 作业 QT

    1.继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中: 结果图:  second.h: widget.h: main.cpp: second.cpp: widget.cpp: 2.新建一个工程文件,将默认提供的代码加上注释信息: .pro: 3.思维导图:

    2024年02月15日
    浏览(56)
  • 7.27 作业 QT

    要求:  结果图: clock.pro:  widget.h: widget.cpp: widget.ui: 思维导图:  

    2024年02月15日
    浏览(41)
  • QT周四作业

    题目: 代码: widget.cpp widget.h

    2024年01月21日
    浏览(42)
  • 7.28 作业 QT

    手动完成服务器的实现,并具体程序要注释清楚: widget.h: widget.cpp: 思维导图:    

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包