实现一个基于 Qt 的客户端程序和一个使用 WinSock2 进行通信的基于 C++ 的服务器程序

客户端程序负责与服务器建立连接,并通过发送和接收数据与服务器进行通信。服务器程序负责监听客户端的连接请求,并创建新的线程来处理每个客户端的收发包操作。客户端发送的数据经过服务器处理

网络访问接口,实现的功能是:服务器一直监听一个端口,一旦有客户端连接请求,便建立连接,并向客户端发送一个字符串,然后客户端接收该字符串并显示出来。

客户端程序:

  1. Client 类:定义了一个基于 QMainWindow 的客户端主窗口类。

  2. Client::Client(QWidget *parent) 构造函数:在构造函数中,创建了一个 QTcpSocket 对象 m_client,并尝试连接到服务器的 IP 地址和端口号("127.0.0.1:6666")。如果连接成功,会打印 "conn ok" 并将 m_client 对象的 readyRead() 信号与 myRead() 槽函数连接起来。

  3. Client::~Client() 析构函数:释放了通过 new 创建的 ui 对象。

  4. Client::on_sendButton_clicked() 槽函数:在点击发送按钮时触发,它会将字符串 "蚂蚁ok" 转换为本地编码的 QByteArray 类型,并通过 m_client 对象的 write() 方法向服务器发送数据。

  5. Client::myRead() 槽函数:在通过 m_client 对象接收到服务器发送的数据时触发,将接收到的数据转换为 QByteArray 类型,并使用 QString::fromLocal8Bit() 转换为本地编码字符串。然后将转换后的字符串追加到 QTextBrowser 部件中以在界面上显示收到的内容。

在qt中新建一个Qt Widgets Application,名为:Client (客户端)

ui界面添加一个编辑框,一个按钮,一个文本编辑框作为文本显示

client.h
#ifndef CLIENT_H
#define CLIENT_H

#include <QMainWindow>
#include <QTcpSocket>

namespace Ui {
    class Client;
}

class Client : public QMainWindow
{
    Q_OBJECT

public:
    explicit Client(QWidget *parent = nullptr);
    ~Client();

private slots:
    void on_sendButton_clicked();  // 发送按钮点击事件的槽函数
    void myRead();  // 读取数据的槽函数

private:
    Ui::Client *ui;  // UI界面对象指针
    QTcpSocket *m_client;  // TCP套接字对象指针
};

#endif // CLIENT_H

client.cpp

#include "client.h"
#include "ui_client.h"
#include <QDebug>

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

    m_client = new QTcpSocket(this);  // 创建TCP套接字对象
    m_client->connectToHost("127.0.0.1", 6666);  // 连接到服务器的IP地址和端口号
    if (m_client->waitForConnected()) {  // 等待连接成功
        qDebug() <&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值