ソケットを介して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!");
}
Qt サーバーを閉じるまで Java のプロセスが停止し、その後、生成されたファイルが破損します。
これを行う必要があり、両方の言語でプログラミングするのは初めてなので、助けていただければ幸いです。
また、受信プロセスが終了してメッセージが表示される次のコマンドを使用しましたが、ファイルは破損しています。
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!");