java socket 传送图片文件到python
java代码
File f = new File("D:/abc.jpg");
String host = "192.18.2.100";
int port = 9999;
Socket socket = new Socket(host,port);
OutputStream os=socket.getOutputStream();//字节输出流
FileInputStream fis = new FileInputStream(f);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int b = 0;
while(-1 != (b = fis.read())){
baos.write(b);
}
baos.flush();
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
pw.write(Base64.getEncoder().encodeToString(baos.toByteArray()));
pw.flush();
socket.shutdownOutput();//关闭输出流
//获取输入流,并读取服务器端的响应信息
InputStream is = socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info = br.readLine();
socket.close();
os.close();
fis.close();
pw.close();
baos.close();
python 代码
HOST='192.18.2.100'
PORT=9999
BUFSIZ=10240
ADDR=(HOST,PORT)
tcpSerSock=socket(AF_INET,SOCK_STREAM) #创服务器套接字
tcpSerSock.bind(ADDR) #套接字与地址绑定
tcpSerSock.listen(5) #监听连接,传入连接请求的最大数
while True:
print('waiting for connection...')
tcpCliSock,addr =tcpSerSock.accept()
print('...connected from:',addr)
while True:
data = tcpCliSock.recv(BUFSIZ)
data = base64.b64decode(data)
if not data or len(data) == 0:
break
nparr = np.fromstring(data , np.uint8)
image = cv2.imdecode(nparr, 1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#后续处理image
tcpCliSock.send('返回值')
tcpCliSock.close()
tcpSerSock.close()