我正在尝试通过套接字在 Qt 服务器中发送图像上传,并在使用 Java 创建的客户端中将其可视化。到目前为止,我只传输字符串进行双方通信,并尝试了不同的示例来发送图像但没有结果。
我用来在qt中传输图像的代码是:
QImage image;
image.load("../punton.png");
qDebug()<<"Image loaded";
QByteArray ban; // Construct a QByteArray object
QBuffer buffer(&ban); // Construct a QBuffer object using the QbyteArray
image.save(&buffer, "PNG"); // Save the QImage data into the QBuffer
socket->write(ban);
在另一端,用 Java 读取的代码是:
BufferedInputStream in = new BufferedInputStream(socket.getInputStream(),1);
File f = new File("C:\\Users\\CLOUDMOTO\\Desktop\\JAVA\\image.png");
System.out.println("Receiving...");
FileOutputStream fout = new FileOutputStream(f);
byte[] by = new byte[1];
for(int len; (len = in.read(by)) > 0;){
fout.write(by, 0, len);
System.out.println("Done!");
}
Java 中的进程一直卡住,直到我关闭 Qt 服务器,然后生成的文件已损坏。
我会很感激任何帮助,因为这样做对我来说是必要的,而且我是使用两种语言编程的新手。
此外,我使用了以下命令,接收过程现在结束并显示一条消息,但文件已损坏。
socket->write(ban+"-1");
socket->close(); in qt.
在java中:
System.out.println(by);
String received = new String(by, 0, by.length, "ISO8859_1");
System.out.println(received);
System.out.println("Done!");