QT----TCP传输文件(上)

TCP传输文件的过程,主要是先建立连接,客户端和服务器的部分代码如下所示:

    //监听套接字
    tcpserver = new QTcpServer(this);

    //tcpsocket = new QTcpSocket(this);

    //监听
    tcpserver->listen(QHostAddress::Any,8888);
    setWindowTitle("服务器端口:8888");

    //如果客户端成功和服务器连接
    //tcpserver会自动触发newConnection();
    connect(tcpserver,&QTcpServer::newConnection,
            [=]()
            {
                //取出建立好连接的套接字
                tcpsocket = tcpserver->nextPendingConnection();
                //获取对方的IP和端口
                QString ip = tcpsocket->peerAddress().toString();
                quint16 port = tcpsocket->peerPort();

                QString str = QString("[%1:%2] 成功连接").arg(ip).arg(port);
                ui->textEdit->setText(str);//显示到编辑区

            }
            );

主要在于服务器需要两个套接字,此过程在上一篇中t提到过,而获取对方的IP和端口此过程还不太熟悉,首先要将其IP和端口取出,peerAddress()和peerPort()两个函数,再将其一起打包显示在bianjiqv编辑区内,此过程还需要进一步的熟悉

void clientwidget::on_pushButton_clicked()
{
    //获取服务器的IP和端口
    QString ip = ui->lineEdit->text();
    quint16 port = ui->lineEdit_2->text().toInt();

    tcpsocket->connectToHost(QHostAddress(ip),port);
}

而客户端主要是在连接时取出IP和端口

而文件的传输则遵循以下过程

QT----TCP传输文件(上)

补充:遇见一个问题,在ui对按钮进行改名时忘记点确认,使得第一次转到槽时显示的还是原来的名字,而之后改正过来,却发现点击按钮时,没有反应,所以文件传输内容明天还会在进行一次更新