Qt中创建TCP客户端

Qt中创建TCP客户端

1. .pro文件
必修在.pro文件中添加如下一句

QT += network

在头文件包含以下内容

#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QHostAddress>
#include "qhostinfo.h"

private:
QTcpSocket * socket;

2.建立客户端

socket = new QTcpSocket(this);

3.连接服务器

    socket->connectToHost(QHostAddress::LocalHost,1200);
//或者
    QString addr = ui->SeverIP->text();//获得服务器IP
    quint16 port = ui->spinPort->value();//获得端口号
    tcpClient->connectToHost(addr,port);//连接服务器

4.连接或断开状态监测
TCP底层有许多状态相应函数,可以为这些状态响应函数添加槽函数进而进行一些操作

连接成功

connect(socket,SIGNAL(connected()),this,SLOT(onConnected()));//连接
void MainWindow::onConnected()
{
    ui->textEdit->append("已连接到服务器");
}

断开连接

void MainWindow::on_actDisconnect_clicked()
{
    if(socket->state() == QAbstractSocket::ConnectedState)//如果是连接状态
    {
        socket->disconnectFromHost();//断开连接
    }
}
connect(socket,SIGNAL(disconnected()),this,SLOT(onDisConnected()));//断开
void MainWindow::onDisConnected()
{
    ui->textEdit->append("端口已与服务器的断开连接");
}

5.发送数据

发送数据要为QByteArray类

void MainWindow::on_actSend_clicked()
{
    QString msg = ui->information->text();//获取需要发送的信息
    ui->textEdit->append("[out]"+msg);//在信息栏显示
    ui->information->clear();//清楚存储栏数据
    ui->information->setFocus();
    QByteArray str = msg.toUtf8();
    str.append("\n");
    tcpClient->write(str);//发送
}

6.读取数据

首先需要判读是否有数据进入,一般设置槽函数来实现读取操作

connect(socket,SIGNAL(readyRead()),this,SLOT(onSocketReadyRead()));//读取数据
void MainWindow::onSocketReadyRead()
{
    while(socket->canReadLine())//无新的一行输入时
    {
        ui->textEdit->append("[in]"+socket->readLine());//读取数据
    }
}

读取数据也可以全部读入readAll();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值