Tcp客户端(Qt)

本文主要讲述如何使用Qt来实现Tcp客户端以及其中遇到的问题及解决过程。

在测试时,服务端运行在虚拟机上,当点击“连接”按钮时,客户端并没有与服务端建立连接,首先打印ip和port信息,确认无误之后再检测服务端是否出现问题,使用telnet测试没有问题,检测防火墙状态没有问题,在win系统下使用telnet可以建立连接,在Qt代码中添加error处理,显示错误信息"The proxy type is invalid for this operation",经检查本主机vpn未关Qt网络请求走了代理,关掉vpn后成功连接到服务端。

以下附上客户端代码(Qt版)

//widget.h
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();
    void onError(QAbstractSocket::SocketError);

private:
    Ui::Widget *ui;
    QTcpSocket *socket;
};
//widget.cpp
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    socket=new QTcpSocket;
    connect(socket,&QTcpSocket::connected,[this](){
        QMessageBox::information(this,"提示","连接成功");
    });
    connect(socket,&QTcpSocket::disconnected,[this](){
        QMessageBox::information(this,"提示","连接断开");
    });
    connect(socket,
            SIGNAL(error(QAbstractSocket::SocketError)),
            this,
            SLOT(onError(QAbstractSocket::SocketError))
            );
}

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


void Widget::on_pushButton_clicked()
{
    QString ip=ui->lineEdit->text();
    QString port=ui->lineEdit_2->text();
    qDebug()<<ip<<" "<<port;
    socket->connectToHost(ip,port.toUShort());

}

void Widget::onError(QAbstractSocket::SocketError){
    qDebug() << socket->errorString();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值