• day 10.4


    服务器

    头文件

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. QT_BEGIN_NAMESPACE
    9. namespace Ui { class Widget; }
    10. QT_END_NAMESPACE
    11. class Widget : public QWidget
    12. {
    13. Q_OBJECT
    14. public:
    15. Widget(QWidget *parent = nullptr);
    16. ~Widget();
    17. private slots:
    18. void on_startbtn_clicked();
    19. void newConnection_slot();
    20. void readyRead_slot();
    21. private:
    22. Ui::Widget *ui;
    23. //服务器指针
    24. QTcpServer *server;
    25. //客户端容器
    26. QList clientlist;
    27. };
    28. #endif // WIDGET_H

    主函数

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. QT_BEGIN_NAMESPACE
    9. namespace Ui { class Widget; }
    10. QT_END_NAMESPACE
    11. class Widget : public QWidget
    12. {
    13. Q_OBJECT
    14. public:
    15. Widget(QWidget *parent = nullptr);
    16. ~Widget();
    17. private slots:
    18. void on_startbtn_clicked();
    19. void newConnection_slot();
    20. void readyRead_slot();
    21. private:
    22. Ui::Widget *ui;
    23. //服务器指针
    24. QTcpServer *server;
    25. //客户端容器
    26. QList clientlist;
    27. };
    28. #endif // WIDGET_H

    客户端

    头文件

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. QT_BEGIN_NAMESPACE
    7. namespace Ui { class Widget; }
    8. QT_END_NAMESPACE
    9. class Widget : public QWidget
    10. {
    11. Q_OBJECT
    12. public:
    13. Widget(QWidget *parent = nullptr);
    14. ~Widget();
    15. private slots:
    16. void on_sendBtn_clicked();
    17. void on_connectBtn_clicked();
    18. void on_disconnectBtn_clicked();
    19. void disconnectBtn_slot();
    20. void connected_slot();
    21. void readyRead_slot();
    22. private:
    23. Ui::Widget *ui;
    24. QTcpSocket *socket;
    25. QString name;
    26. };
    27. #endif // WIDGET_H

    主函数

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. //实例化一个客户端
    9. socket= new QTcpSocket(this);
    10. //连接
    11. connect(socket,&QTcpSocket::connected,this,&Widget::connected_slot);
    12. //读取
    13. connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
    14. //断开
    15. connect(socket,&QTcpSocket::disconnected,this,&Widget::disconnectBtn_slot);
    16. }
    17. Widget::~Widget()
    18. {
    19. delete ui;
    20. }
    21. void Widget::on_sendBtn_clicked()
    22. {
    23. //组合数据
    24. QString msg =name+":"+ui->lineEdit->text();
    25. //发送
    26. socket->write(msg.toLocal8Bit());
    27. //清空
    28. ui->lineEdit->clear();
    29. }
    30. void Widget::on_connectBtn_clicked()
    31. {
    32. //用户名
    33. name=ui->userNameEdit->text();
    34. //主机地址
    35. QString ip=ui->ipEdit->text();
    36. //端口号
    37. quint16 port=ui->portEdit->text().toUInt();
    38. socket->connectToHost(ip,port);
    39. }
    40. void Widget::on_disconnectBtn_clicked()
    41. {
    42. QString msg=name+":离开聊天室";
    43. socket->write(msg.toLocal8Bit());
    44. //发送断开信号
    45. socket->disconnectFromHost();
    46. }
    47. void Widget::disconnectBtn_slot()
    48. {
    49. QMessageBox::information(this,"提示","推出成功");
    50. }
    51. void Widget::connected_slot()
    52. {
    53. QMessageBox::information(this,"成功","您已经成功进入聊天室");
    54. QString msg=name+":进入聊天室";
    55. socket->write(msg.toLocal8Bit());
    56. }
    57. void Widget::readyRead_slot()
    58. {
    59. QByteArray msg =socket->readAll();
    60. ui->msgWid->addItem(QString::fromLocal8Bit(msg));
    61. }

    现象

  • 相关阅读:
    通过docker部署jenkins
    SpringBoot:SpringApplication.run的源码解析
    Python中time模块
    【Linux】常用命令
    后厂村路灯:【干货分享】AppleDevelop苹果开发者到期重置
    【SpringMVC笔记13】SpringMVC集成Freemarker模板引擎
    云原生K8S------Yaml文件详解
    QPaint绘制自定义仪表盘组件03
    MySQl数据库————DQL数据查询语言
    <MySQL> 什么是数据库索引?数据库索引的底层结构是什么?
  • 原文地址:https://blog.csdn.net/m0_70569664/article/details/133559522