我听说我们可以以某种方式通过套接字发送带有二进制文件的图像文件......但我不知道如何将图像文件转换为二进制文件,甚至不知道如何考虑通过套接字发送它......
希望有人可以发布一个简单的例子吗?或指出我正确的方向:) 我也将 QT 用于我的 gui,但不使用 QT 套接字编程。
非常感谢 :DI 真的很感激
问题@djc:
您将如何获取图像的目录路径,并以某种方式在该图像上使用发送命令?我基本上使用C++。但这也是我有一段时间的一个问题。
我听说我们可以以某种方式通过套接字发送带有二进制文件的图像文件......但我不知道如何将图像文件转换为二进制文件,甚至不知道如何考虑通过套接字发送它......
希望有人可以发布一个简单的例子吗?或指出我正确的方向:) 我也将 QT 用于我的 gui,但不使用 QT 套接字编程。
非常感谢 :DI 真的很感激
问题@djc:
您将如何获取图像的目录路径,并以某种方式在该图像上使用发送命令?我基本上使用C++。但这也是我有一段时间的一个问题。
您拥有的任何图像文件都已经是二进制文件。您可以通过套接字发送它们。
您需要知道或让用户告诉您找到图像文件的路径。
一旦你有了它,然后你在逻辑上打开文件,将它读入缓冲区,然后将该缓冲区写入套接字,最后关闭文件(总是关闭你打开的文件并释放你分配的文件)。但是,有一些细节需要排序——比如接收端如何知道后面的数据是图像以及它有多大(所以它知道你什么时候发送的)。您的协议可能会定义一个位模式(一个或两个字节)将消息标识为图像,然后可能使用四个字节来指定图像的大小,然后是正确的字节数。您可以使用基于 POSIX 的stat()
系统调用。或者,您可以发送一系列包含图像部分的数据包(再次使用类型 - 这次是“图像数据包”而不是“图像”类型)加上数据包的长度(可能只有 16 位无符号整数,最大大小为 65535 字节),加上最后一段的“结束图像包”。这对发件人来说可能更容易;如果数据直接进入文件,接收器很容易,但如果接收器需要内存中的图像,则很麻烦。