Qt实现简单的Socket通信---客户端

首先搞定服务端,这里YTNetWork作为Socket服务端使用,其他的软件也是可以的,点击启动即可

下面正式进入主题,开发socket 客户端

新建一个Qt的项目 选择QWidget,创建界面如下:

在这里插入图片描述

包含了3个控件,2个TextEdit 分别存放 客户端的收的信息 和 发的消息
还有一个button 点击的时候把发送消息发送出去。

在项目管理文件中添加网络支持

QT       += core gui network

然后在是widget中的代码:

#include "widget.h"
#include "ui_widget.h"
#include <QtNetwork>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

   client = new QTcpSocket(this);
   client->connectToHost(QHostAddress("127.0.0.1"), 8080);

    connect(client,&QIODevice::readyRead ,[=](){
        char* data=new char[1024];
        client->readLine(data,1024);
        ui->textEdit->setText(QString(data));
    });

}

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


void Widget::on_pushButton_clicked()
{
    QString  data=ui->textEdit_2->toPlainText();
    QByteArray ba = data.toLocal8Bit();  // 防止中文乱码
    client->write(ba);
}

其中创建了一个button点击的槽函数 on_pushButton_clicked() ,这个函数的功能就是发送消息

另外为接收socket处理创建了一个槽函数。

  connect(client,&QIODevice::readyRead ,[=](){
        char* data=new char[1024];
        client->readLine(data,1024);
        ui->textEdit->setText(QString(data));
    });

一开始比较好奇为什么不直接读取了,搞了一个类似回调函数的感觉,后来一想因为不能阻塞界面啊 , 桌面软件 用户ui必须要响应及时啊。哈哈 是不是有点前端ajax的味道了 。异步的javascript。

ok 一切搞定后启动程序开始测试

输入消息,点击发送 服务端收到了消息
在这里插入图片描述

服务端输入消息,点击发送

在这里插入图片描述

ok了,总体而言还是比较简单的。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值