通过套接字编程发送图像文件(jpeg,png)的提示/示例?

时间:2009-11-29 10:10:44

标签: c++ qt sockets file-transfer

我听说我们可以通过套接字以某种方式发送带二进制文件的图像文件...... 但我不知道如何将图像文件转换为二进制文件或如何甚至考虑通过套接字发送它...

希望有人能发布一个简单的例子吗?或指向正确的方向:)我也使用QT只是我的gui,但没有使用QT套接字编程。

非常感谢:D我真的很感激


问题@ djc:

如何获取图像的目录路径,并以某种方式在该图像上使用send命令?我基本上使用的是C ++。但这也是我有一段时间以来的问题。

2 个答案:

答案 0 :(得分:2)

您拥有的任何图像文件都已是二进制文件。你可以通过套接字发送它们。

答案 1 :(得分:0)

您需要知道或让用户告诉您一个可以找到图像文件的路径。

一旦你有了,那么你逻辑上打开文件,将其读入缓冲区,然后在套接字上写入该缓冲区,最后关闭文件(始终关闭你打开的内容并释放你分配的内容)。但是,有一些细节需要排序 - 比如接收端如何知道后面的数据是一个图像以及它有多大(所以它知道你什么时候发送它)。据推测,您的协议将定义一个位模式(一个或两个字节),将消息标识为图像,然后可能使用四个字节来指定图像的大小,然后是正确的字节数。您可以使用基于POSIX的stat()系统调用找到文件的大小。或者,您可以发送一系列包含图像部分的数据包(同样具有类型 - 此时,类型为'图像数据包'而不是'图像')加上数据包的长度(可能只是16位)无符号整数,最大大小为65535字节),加上最后一段的“结束图像包”。这对发件人来说可能更容易;如果数据直接发送到文件,接收器很容易,但如果接收器需要内存中的图像则很麻烦。