python socket 发送图片
生活随笔
收集整理的這篇文章主要介紹了
python socket 发送图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
服務端
# -*- 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 機器位數不一樣,一個32位一個64位buf = conn.recv(fileinfo_size)print('收到的字節流:', 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()總結
以上是生活随笔為你收集整理的python socket 发送图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三位数组的轴python_关于numpy
- 下一篇: 计算机软考培训网校,计算机软考培训中心