日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python socket 发送图片

發(fā)布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python socket 发送图片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

服務(wù)端

# -*- coding=utf-8 -*- import socket import threading import sys import os import structdef deal_data(conn, addr):print('Accept new connection from {0}'.format(addr))while True:fileinfo_size = struct.calcsize('128sl') # linux 和 windows 互傳 128sl 改為 128sq 機器位數(shù)不一樣,一個32位一個64位buf = conn.recv(fileinfo_size)print('收到的字節(jié)流:', buf, type(buf))if buf:print(buf, type(buf))filename, filesize = struct.unpack('128sl', buf)fn = filename.strip(str.encode('\00'))new_filename = os.path.join(str.encode('./'), str.encode('new_') + fn)print('file new name is {0}, filesize if {1}'.format(new_filename, filesize))recvd_size = 0 # 定義已接收文件的大小with open(new_filename, 'wb') as fp:print("start receiving...")while not recvd_size == filesize:if filesize - recvd_size > 1024:data = conn.recv(1024)recvd_size += len(data)else:data = conn.recv(filesize - recvd_size)recvd_size = filesizefp.write(data)print("end receive...")conn.close()breakdef socket_service():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('', 12345)) # 這里換上自己的ip和端口s.listen(10)except socket.error as msg:print(msg)sys.exit(1)print("Waiting...")while True:conn, addr = s.accept()t = threading.Thread(target=deal_data, args=(conn, addr))t.start()if __name__ == '__main__':socket_service()

客戶端

# -*- coding=utf-8 -*-import socket import os import sys import structdef socket_client():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(('192.168.0.66', 12345))except socket.error as msg:print(msg)sys.exit(1)while True:filepath = input("please input file path: ")if os.path.isfile(filepath):# 定義定義文件信息。128s表示文件名為128bytes長,l表示一個int或log文件類型,在此為文件大小fileinfo_size = struct.calcsize('128sl')# 定義文件頭信息,包含文件名和文件大小fhead = struct.pack('128sl', bytes(os.path.basename(filepath).encode('utf-8')), os.stat(filepath).st_size)s.send(fhead)print('client filepath: {0}'.format(filepath))with open(filepath, 'rb') as fp:while True:data = fp.read(1024)if not data:print('{0} file send over...'.format(filepath))breaks.send(data)s.close()breakif __name__ == '__main__':socket_client()

總結(jié)

以上是生活随笔為你收集整理的python socket 发送图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。