QT开发中文网

qt 跨局域网怎么传文件

在Qt中,可以使用TCP或UDP协议进行跨局域网传输文件。下面是一个基本的示例代码,演示了使用TCP协议传输文件:

// 服务器端代码
QTcpServer server;
QTcpSocket* clientSocket;

void sendData()
{
    QFile file("path/to/file"); // 要发送的文件路径
    if (!file.open(QIODevice::ReadOnly))
    {
        qDebug() << "无法打开文件";
        return;
    }

    QByteArray data = file.readAll();
    qint64 fileSize = file.size();

    clientSocket->write(reinterpret_cast<const char*>(&fileSize), sizeof(qint64)); // 发送文件大小

    while (clientSocket->bytesToWrite() > 0)
        clientSocket->waitForBytesWritten();

    clientSocket->write(data); // 发送文件数据

    file.close();
}

void onNewConnection()
{
    clientSocket = server.nextPendingConnection();
    
    connect(clientSocket, &QTcpSocket::disconnected, clientSocket, &QTcpSocket::deleteLater);
    
    sendData(); // 发送文件给客户端
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    server.listen(QHostAddress::Any, 1234); // 设置服务器监听地址和端口
    
   connect(&server, &QTcpServer::newConnection, onNewConnection);

   return a.exec();
}
// 客户端代码
QString serverIP = "192.168.0.100"; // 服务器IP地址
quint16 serverPort = 1234; // 服务器端口号

QTcpSocket socket;

void receiveData()
{
   qint64 fileSize;
   socket.waitForReadyRead();
   
   socket.read(reinterpret_cast<char*>(&fileSize), sizeof(qint64)); // 接收文件大小
   
   QByteArray data = socket.readAll(); // 接收文件数据
   
   QFile file("path/to/save/file"); // 保存文件的路径
   if (!file.open(QIODevice::WriteOnly))
   {
       qDebug() << "无法创建文件";
       return;
   }

   file.write(data); // 写入文件数据

   file.close();
}

void connectToServer()
{
    socket.connectToHost(serverIP, serverPort);
    
    if (socket.waitForConnected())
        receiveData(); // 接收来自服务器的文件
    else
        qDebug() << "连接失败";
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    connect(&socket, &QTcpSocket::connected, connectToServer);

    return a.exec();
}

以上代码演示了在跨局域网中使用TCP协议进行文件传输。请根据实际需求修改IP地址、端口号和文件路径等相关参数。另外,为了保证稳定性和安全性,可能需要对代码进行进一步优化和改进,比如加入错误处理机制、断点续传功能等。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9355

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?