gpt4 book ai didi

java - 从Java客户端向Python服务器发送图像时图像文件损坏

转载 作者:行者123 更新时间:2023-12-03 11:51:37 28 4
gpt4 key购买 nike

我想通过套接字将客户端(这是Java应用程序)中的图像发送到服务器,该服务器应使用Python进行编程。不幸的是,我是Python/Java编程的新手,也不了解我在网上找到的固定方法,但是到目前为止,最有效的方法是:
在客户端,我做到了

    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();
如果我正确理解的话,只是将字节数组形式的Image数据发送到接收端口。
现在在服务器(Python)上,我有这个:
import socket  # Import socket module

s = socket.socket() # Create a socket object
port = 1234 # Reserve a port for your service.
s.bind(("192.168.178.44", port)) # Bind to the port
s.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”的新文件,它在两个路径中的大小都相同,但是由于某种原因它已损坏或损坏,所以我无法打开它。
您能告诉我什么地方不对,还请问我的代码应该是什么样的?就像我说的那样,对于编程和模糊的概念,我应该做的事情并没有多大帮助。

最佳答案

您的两个代码都可以,只是一件事。
在Java代码中,您首先要发送数据的大小,但是在python代码中,则不要将其与图像分开。
最好的办法就是不发送大小,而是通过发送整个图像开始发送。
我的意思是将这一行注释掉:

        dos.writeInt(size);
它应该解决问题。
祝你好运。

关于java - 从Java客户端向Python服务器发送图像时图像文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62685365/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com