QT开发中文网

c++qt及时通讯怎么发送图片来个例子 对方怎么接收图片也来个例子

以下是一个简单的示例代码,演示了使用C++ Qt进行实时通信发送图片的过程。

发送端示例代码:

#include <QCoreApplication>
#include <QTcpSocket>
#include <QFile>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpSocket socket;
    socket.connectToHost("127.0.0.1", 8888); // 连接服务器

    if(socket.waitForConnected())
    {
        QFile file(":/path/to/image.jpg"); // 加载图片文件
        if(file.open(QIODevice::ReadOnly))
        {
            QByteArray imageData = file.readAll(); // 读取图片数据
            socket.write(imageData); // 发送图片数据

            file.close();
            socket.disconnectFromHost();
        }
        else
        {
            qDebug() << "无法打开图片文件";
        }
    }
    else
    {
        qDebug() << "无法连接到服务器";
    }

    return a.exec();
}

接收端示例代码:

#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QFile>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpServer server;
    server.listen(QHostAddress::Any, 8888); // 监听任意地址和指定端口

    QObject::connect(&server, &QTcpServer::newConnection, [&](){
        QTcpSocket* socket = server.nextPendingConnection(); // 接受新的客户端连接

        QFile file("received_image.jpg"); // 接收到的图片保存为 received_image.jpg
        if(file.open(QIODevice::WriteOnly))
        {
            while (socket->bytesAvailable() > 0)
            {
                QByteArray imageData = socket->readAll(); // 读取图片数据
                file.write(imageData); // 写入文件
            }

            file.close();
        }
        else
        {
            qDebug() << "无法打开保存图片的文件";
        }

        socket->disconnectFromHost();
    });

    return a.exec();
}

在发送端示例代码中,首先通过QTcpSocket连接到服务器的IP地址和端口。然后加载要发送的图片文件,并将其读取为QByteArray格式的数据。接着使用socket对象的write方法将图片数据发送给服务器,最后断开与服务器的连接。

在接收端示例代码中,首先创建一个QTcpServer对象并开始监听指定端口。当有新的客户端连接时,会触发newConnection信号,通过nextPendingConnection获取对应的QTcpSocket对象。然后打开一个文件用于保存接收到的图片,并不断从socket中读取数据写入到文件中,最后关闭文件和与客户端的连接。

请注意替换示例代码中的路径和IP地址为实际情况下的路径和IP地址,并根据需要进行适当修改和错误处理。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?