Qt tcp client程序

本文介绍了一个使用Qt编写的简单TCP客户端程序。该程序包括连接、发送消息、接收数据及错误处理等功能。通过示例代码展示了如何在Qt项目中集成网络模块,并实现基本的TCP通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Qt写了个简单的Tcp客户端程序:


工程名client;

1> client.pro中不要忘了加入:


QT       += network

2> mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtNetwork/QTcpSocket>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_connectBtn_clicked();
    void connectedSlot();
    void disconnectedSlot();
    void readyReadSlot();
    void errorSlot(QAbstractSocket::SocketError);

    void on_sendBtn_clicked();

    void on_clearBtn_clicked();

private:
    Ui::MainWindow *ui;
    QTcpSocket *socket_;
    bool isConnected_;
};

#endif // MAINWINDOW_H

2> mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    isConnected_(false)
{
    ui->setupUi(this);
    socket_ = new QTcpSocket(this);
    connect(socket_, SIGNAL(connected()), this, SLOT(connectedSlot()));
    connect(socket_, SIGNAL(disconnected()), this, SLOT(disconnectedSlot()));
    connect(socket_, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
    connect(socket_, SIGNAL(error(QAbstractSocket::SocketError)), this,
            SLOT(errorSlot(QAbstractSocket::SocketError)));
}

MainWindow::~MainWindow()
{
    delete socket_;
    delete ui;
}

void MainWindow::connectedSlot()
{
    isConnected_ = true;
}

void MainWindow::disconnectedSlot()
{
    isConnected_ = false;
    socket_->close();
}

void MainWindow::readyReadSlot()
{
    QByteArray message = socket_->readAll();
    ui->recvEdit->append(message);
}

void MainWindow::errorSlot(QAbstractSocket::SocketError)
{
    QMessageBox::information(this, "show", socket_->errorString());
    disconnectedSlot();
}

void MainWindow::on_connectBtn_clicked()
{
    socket_->connectToHost(ui->addressEdit->text(), ui->portEdit->text().toInt());
}

void MainWindow::on_sendBtn_clicked()
{
    if (isConnected_) {
        QString str = ui->sendEdit->text();
        socket_->write(str.toLatin1().data(), str.length());
    } else {
        QMessageBox::information(this, "show", "unconnected");
    }
}

void MainWindow::on_clearBtn_clicked()
{
    ui->recvEdit->clear();
}


3> 上面代码中使用了mainwidnow.ui见名之意应该很容易理解。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值