关于如何在套接字编程中发送图像的问题?

时间:2009-11-27 11:59:34

标签: c++ qt networking sockets

我有几个关于发送图像的问题。

如何处理不同类型的文件,jpeg,png等。

如果文件很大,我可以使用序列号...但是如果我不知道序列号的数量,我不知道如何停止重复。

我对传输图像/文件的了解几乎没有。我以前从来没有编过类似的东西。希望得到一些提示和技巧=)

非常感谢。

我也在使用QT,如果这对我的情况有帮助的话。

3 个答案:

答案 0 :(得分:3)

至少对于图像,假设您正在使用QImage,您可以使用QDataStream将QImage转换为QByteArray,然后可以使用write()将其写入QTcpSocket对象。使用此方法可以将几乎任何Qt的数据类型序列化为QByteArray。

对于一般文件,QIODevice(QFile的基础等)提供readAll()等读取函数,它将整个文件读入QByteArray,以供您发送。

您将在Qt发行版中找到许多网络示例。见Qt助理 - >内容 - >教程和示例 - >网络了解更多信息。

答案 1 :(得分:2)

如果使用TCP套接字,则不需要序列号,因为TCP已经确保数据的到达顺序与发送的顺序相同。只需发送数据,完成后关闭连接。您可以选择使用某种自定义类型的数据包标头来提供其他信息(例如,如果您想通过一个连接传输多个文件)。

答案 2 :(得分:0)

像传输任何其他二进制数据一样传输它们。 send()recv()。或者Qt提供的任何抽象。