【发布时间】:2020-10-22 09:42:49
【问题描述】:
我想通过套接字从我的客户端(它是一个 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 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”的新文件,它在两个路径中具有相同的大小,但我无法打开它,因为它以某种方式损坏或损坏。
您能告诉我哪里出了问题,还请告诉我我的代码应该是什么样子?正如我所说,我是编程新手,我应该做什么的模糊概念对我没有多大帮助。
【问题讨论】: