通過socket傳輸圖片流-Python(可跨平臺使用)

我之前用過socket跨語言跨平臺通信,不過那時傳的字節都比較小,等我想傳輸圖片時問題出現了,傳輸時報錯,網上查了查,是傳輸數據過大導致的,於是客戶端獲取對應文件的size,並把它分段傳輸,服務端拿到分段的數據並把它重新合併成你想要的文件

廢話不多說,直接放代碼

客戶端:

# -*- coding: UTF-8 -*-
import socket, os, struct
import time
import cv2

"""set ip address"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.200.243', 50005))

pre_name = os.path.dirname(os.path.realpath(__file__))
while True:
    filepath = pre_name+'/0.jpg'
    image = cv2.imread(filepath)
    gray = cv2.cvtColor( image, cv2.COLOR_BGR2GRAY )
    if os.path.isfile(filepath):
        fileinfo_size = struct.calcsize('128sl')  # 定義打包規則
        # 定義文件頭信息,包含文件名和文件大小
        fhead = struct.pack('128sl', bytes(os.path.basename(filepath).encode('utf-8')),os.stat(filepath).st_size)
        print(fhead)
        s.send(fhead)
        print('client filepath: ', os.path.basename(filepath), os.stat(filepath).st_size)

        fo = open(filepath, 'rb')
        while 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章