使用python在網絡上傳送圖片數據,需要以byte格式讀取圖片,這樣纔可以通過socket傳輸。
當客戶端連上服務器,服務器首先把圖片數據的尺寸傳輸過去,然後再傳輸圖片。
服務器端代碼
# server
import socket # 導入 socket 模塊
s = socket.socket() # 創建 socket 對象
host = socket.gethostname() # 獲取本地主機名
port = 12345 # 設置端口
s.bind((host, port)) # 綁定端口
pic_path = r'd:\Pictures\7.JPG'
with open(pic_path, 'rb') as f:
data = f.read()
s.listen(5) # 等待客戶端連接
while True:
conn, addr = s.accept() # 建立客戶端連接
print('連接地址:', addr)
conn.send(str(len(data)).encode('utf-8'))
conn.send(data)
conn.close() # 關閉連接
客戶端連接到服務器端後,會首先接收圖片數據大小以方便處理,然後接收圖片數據,寫到路徑下。
客戶端代碼
import socket # 導入 socket 模塊
s = socket.socket() # 創建 socket 對象
host = socket.gethostname()
port = 12345 # 設置端口號
s.connect((host, port))
r = s.recv(1024)
print(r)
data_len = eval(r)
data = s.recv(data_len)
s.close()
with open(r'C:\Users\Desktop\1.png', 'ba') as f:
f.write(data)
f.close()
參考:https://www.runoob.com/python/python-socket.html