我想通过套接字从我的客户端(它是一个 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”的新文件,它在两个路径中具有相同的大小,但我无法打开它,因为它以某种方式损坏或损坏。
你能告诉我出了什么问题吗,请问我的代码应该是什么样子的?正如我所说,我是编程新手,对我应该做什么的模糊概念对我帮助不大。
阿波罗的战车
相关分类