Qt的网络通信(以一对一聊天室为例)

Qt的网络通信(以一对一聊天室为例)

一、以一对一(服务器,客户端)为例

  1、服务器:

     1、在目录文件 .pro文件中   QT       += core gui network  添加network

     2、在.h 文件中,定义

        QTcpServer* server;
        QTcpSocket* socket; 记得添加头文件

     3、 ui->setupUi(this);

        server = new QTcpServer;
        server->listen(QHostAddress::Any,1111);//等待连接
        connect(server,SIGNAL(newConnection()),this,SLOT(new_connect()));//记得添加槽信号

     

      4、//找到与服务器链接的客户端
        void MainWindow::new_connect()
        {

          socket = server->nextPendingConnection();
          connect(socket,SIGNAL(readyRead()),this,SLOT(ready_read()));
          ui->pushButton->setEnabled(true);
        }

      5、

        void MainWindow::ready_read()
        {
          socket->read(buf,sizeof(buf));

          ui->read_listWidget->addItem(buf);

        }

      6、        

        void MainWindow::on_pushButton_clicked()

        {

          socket->write(ui->lineEdit->text().toStdString().c_str(),ui->lineEdit->text().length());//发送内容给客户端
          ui->read_listWidget->addItem("server:"+ui->lineEdit->text());
          ui->lineEdit->setText(" ");\\清空写的内容
        }

  2、客户端 (是通过IP地址和端口号来进行连接的)

    1、+network

    2、定义socket

    3、

      void MainWindow::on_conncet_buf_clicked()
      {
        socket->connectToHost(ui->lineEdit_2->text(),ui->lineEdit_3->text().toUInt());
        connect(socket,SIGNAL(readyRead()),this,SLOT(ready_read()));
      }

    4、

      void MainWindow::ready_read()
      {
        char buf[255] = {};
        socket->read(buf,sizeof(buf));
        ui->read_listWidget->addItem(buf);
      }

    5、void void MainWindow::on_send_btn_clicked()

      {

        socket->write(ui->lineEdit->text().toStdString().c_str(),buf+ui->lineEdit->text().toAscii().length());//文字输出,要在mian.c中添加对中文的处理;
         ui->read_listWidget->addItem(buf+ui->lineEdit->text());
        ui->lineEdit->setText(" ");

      }

posted @ 2018-08-30 23:32 zlc1010 阅读(...) 评论(...) 编辑 收藏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值