skyblue_2012 2019-03-24 18:20 采纳率: 50%
浏览 607

android客户端与qt服务端通过socket通信传图片的问题

android客户端:
public void sendData(final String filepath) {
new Thread() {
@Override
public void run() {
try {
Socket socket = new Socket();
// Socket socket = new Socket("192.168.1.108", 8888);//创建Socket实例,并绑定连接远端IP地址和端口
socket.connect(new InetSocketAddress("192.168.1.108", 8888));
Log.i("线程反馈1", "创建成功!");
// DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// out.writeUTF("Helloworld");
//获取输出流
OutputStream ou = socket.getOutputStream();
//读取服务器响应
BufferedReader bff = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line = null;
String buffer = "";
while ((line = bff.readLine()) != null) {
buffer = line + buffer;
}
//向服务器发送文件
File file = new File(filepath);
if (file.exists()) {
FileInputStream fileInput = new FileInputStream(filepath);
DataOutputStream dos = new DataOutputStream(ou);
// 文件名
dos.writeUTF(file.getName());
byte[] bytes = new byte[1024];
int length = 0;
while ((length = fileInput.read(bytes)) != -1) {
dos.write(bytes, 0, length);
}
//告诉服务端,文件已传输完毕
socket.shutdownOutput();
fileInput.close();
dos.close();
}
//关闭各种输入输出流
ou.flush();
// bff.close();
ou.close();
socket.close();
} catch (Exception e) {
Log.i("线程反馈", "线程异常!");
}
}
}.start();
}
qt服务端:
void MainWindow::readMessage()
{
QByteArray array;
quint32 data_len = 0;
quint32 len = 0xffffffff;
//struct Head head;

while(m_tcpSocket->waitForReadyRead(5000)){
    qDebug()<<"bytesAvailable"<<endl;
    if(data_len == 0){
        QDataStream in(m_tcpSocket);
        in >> len;
        qDebug("datalen:%d",len);
    }
    data_len += m_tcpSocket->bytesAvailable();
    array.append((QByteArray)m_tcpSocket->readAll());
    qDebug()<<data_len<<endl;
    if(data_len == len){
        qDebug()<<"ok,all bytes revd"<<endl;
        break;
    }
}
qDebug()<<array;
qDebug("recvd len:%d",data_len);

QPixmap picture;
picture.loadFromData(array,"jpeg");
picture.save("F:/test/test.jpg","jpg",-1);

}
是哪出了问题,传字符串还有反应,传图片一直没反应

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 19:39
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题