亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將圖像從 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();如果我理解正確的話,只需將字節數組形式的圖像數據發送到接收端口?,F在在服務器(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 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號