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