为了账号安全,请及时绑定邮箱和手机立即绑定

将图像从 Java 客户端发送到 Python 服务器时图像文件损坏

将图像从 Java 客户端发送到 Python 服务器时图像文件损坏

慕斯709654 2023-02-12 19:04:11
我想通过套接字从我的客户端(它是一个 Java 应用程序)发送一个图像到我的服务器,它应该用 Python 编程。不幸的是,我是 Python/Java 编程的新手,不理解我在网上找到的 moast 方法,但到目前为止似乎效果最好的是:在客户端,我这样做了    String pathname = new String("C:\\Users\\vince\\Pictures\\Saved Pictures\\M249.jpg");    Socket photoSocket = new Socket(IP_ADDRESS, PORT_NO);    DataOutputStream dos = new DataOutputStream(photoSocket.getOutputStream());    FileInputStream fis = new FileInputStream(pathname);    int size = fis.available();    byte[] data = new byte[size];    fis.read(data);    dos.writeInt(size);    dos.write(data);    dos.flush();    dos.close();    fis.close();    photoSocket.close();如果我理解正确的话,只需将字节数组形式的图像数据发送到接收端口。现在在服务器(Python)上我有这个:import socket  # Import socket modules = socket.socket()  # Create a socket objectport = 1234  # Reserve a port for your service.s.bind(("192.168.178.44", port))  # Bind to the ports.listen(5)  # Now wait for client connection.while True:  conn, addr = s.accept()  print('client connected ... ', addr)  f = open('tst.jpg', 'wb')  while True:    data = conn.recv(1024)    if not data: break    f.write(data)    print('writing file ....')  f.close()  print("finished writing file")  conn.close()  print('client disconnected')它似乎在传输数据,因为在启动我的 python 服务器文件然后运行 java 应用程序之后,我的 python 控制台运行:客户端连接... ('192.168.178.44', 51061) 写文件....写文件....写文件....写文件....写文件....写文件....写入文件....完成写入文件客户端断开连接然后我有一个名为“tst.jpg”的新文件,它在两个路径中具有相同的大小,但我无法打开它,因为它以某种方式损坏或损坏。你能告诉我出了什么问题吗,请问我的代码应该是什么样子的?正如我所说,我是编程新手,对我应该做什么的模糊概念对我帮助不大。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您的两个代码都可以,只是一件事。在 java 代码中,您首先发送数据的大小,但在 python 代码中,您不会将它与图像分开。

最好的办法就是不发送尺寸,而是通过发送整个图像来开始发送。我的意思是评论这一行:

        dos.writeInt(size);

它应该可以解决问题。

祝你好运。


查看完整回答
反对 回复 2023-02-12
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号