样例1 简单测试
发送端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import socket import os import time filename = input( 'please enter the filename you want to send:\n' ) filesize = str(os.path.getsize(filename)) fname1, fname2 = os.path.split(filename) client_addr = ( '127.0.0.1' ,9999) f = open(filename, 'rb' ) count = 0 flag = 1 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #建立连接: s.connect(( '127.0.0.1' , 9999)) while True: if count == 0: s.send(filesize.encode()) start = time.time() s.recv(1024) s.send(fname2.encode()) for line in f: s.send(line) print( 'sending...' ) s.send(b 'end' ) break s.close end = time.time() print( 'cost' + str(round(end - start, 2)) + 's' ) |
接收端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import socket import time s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(( '127.0.0.1' ,9999)) s.listen(5) print( 'Waiting for connection...' ) count=0 while True: sock,addr = s.accept() print( 'Accept new connection from %s:%s...' % addr) if count == 0: data1 = sock.recv(1024) print(str(data1)) file_total_size = int (data1.decode()) received_size = 0 sock.send( 'received' .encode()) data = sock.recv(1024) filepath = str(data.decode()) f = open(filepath, 'wb' ) while received_size < file_total_size: data = sock.recv(1024) f.write(data) received_size += len(data) print( '已接收 ' ,received_size, ' Byte' ) data = sock.recv(1024) if data == b 'end' : break f.close() s.close() |
发送端输入
send/测试文档.docx
接收端保存在
样例2 封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import socket import time def socketInt(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(( '127.0.0.1' ,9999)) s.listen(5) print( 'Waiting for connection...' ) return s def socketRec(sockSever,savePath): s=sockSever sock,addr = s.accept() print( 'Accept new connection from %s:%s...' % addr) data1 = sock.recv(1024) print(str(data1)) file_total_size = int (data1.decode()) received_size = 0 sock.send( 'received' .encode()) data = sock.recv(1024) filepath = str(data.decode()) filepath=savePath+filepath f = open(filepath, 'wb' ) while received_size < file_total_size: data = sock.recv(1024) f.write(data) received_size += len(data) print( '已接收 ' ,received_size, ' Byte' ) data = sock.recv(1024) if data == b 'end' : print( "接受文件" ,filepath) #f.close() #break f.close() if __name__ == "__main__" : savePath= "rec/" # 前面不可以加/ sockSever=socketInt() while True: socketRec(sockSever,savePath) sockSever.close() |
发送端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import socket import os import time def SendFile(filename): #filename = input('please enter the filename you want to send:\n') filesize = str(os.path.getsize(filename)) fname1, fname2 = os.path.split(filename) f = open(filename, 'rb' ) count = 0 flag = 1 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #建立连接: s.connect(( '127.0.0.1' , 9999)) while True: if count == 0: s.send(filesize.encode()) start = time.time() s.recv(1024) s.send(fname2.encode()) for line in f: s.send(line) print( 'sending...' ) s.send(b 'end' ) break s.close end = time.time() print( 'cost' + str(round(end - start, 2)) + 's' ) if __name__ == "__main__" : while True: filename = input( 'please enter the filename you want to send:\n' ) SendFile(filename) |
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-06-15 path环境变量
2020-06-15 2 海康网络相机官方例程(2-1)采集图像转化opencv
2020-06-15 path环境变量限制长度
2019-06-15 ESP32开发(0)ESP32 硬件资源
2018-06-15 赛事报备