神剑山庄资源网 Design By www.hcban.com
目录结构:
client:
#!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\client\download' gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) gd_client.connect(('127.0.0.1',8123))
while True:
#1、发命令 cmd=input(': ').strip() #get a.txt if not cmd:continue gd_client.send(cmd.encode('utf-8')) #2、以写的方式打开一个新文件,接收服务端发来的文件的内容写入客户的新文件 #第一步:先收报头的长度 obj=gd_client.recv(4) header_size=struct.unpack('i',obj)[0] # 第二步:再收报头 header_bytes = gd_client.recv(header_size) # 第三步:从报头中解析出对真实数据的描述信息 header_json = header_bytes.decode('utf-8') header_dic = json.loads(header_json) ''' header_dic = { 'filename': filename, # 1.txt 'file_size': os.path.getsize(r'%s\%s' % (share_dir, filename)) # 路径/1.txt } ''' total_size = header_dic['file_size'] file_name = header_dic['filename'] # 第四步:接收真实的数据 with open(r'%s\%s'%(download_dir, file_name),'wb') as f: recv_size = 0 while recv_size < total_size: line = gd_client.recv(1024) f.write(line) recv_size += len(line) print('总大小:%s 已下载大小:%s' % (total_size, recv_size)) gd_client.close()"htmlcode">#!/usr/bin/env python # -*-coding:utf-8 -*- import socket import subprocess import struct import json import os share_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\server\share' gd_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) gd_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) gd_server.bind(('127.0.0.1', 8123)) # 0-65535: 0-1024给操作系统使用 gd_server.listen(5) while True: conn, client_addr = gd_server.accept() while True: # 通信循环 try: # 1、收命令 res = conn.recv(8096) # b'get 1.txt' if not res: break # 适用于linux操作系统 # 2、解析命令,提取相应命令参数 cmds = res.decode('utf-8').split() # ['get','1.txt'] filename = cmds[1] # 3、以读的方式打开文件,读取文件内容发送给客户端 # 第一步:制作固定长度的报头 header_dic = { 'filename': filename, # 1.txt 'file_size':os.path.getsize(r'%s\%s'%(share_dir, filename)) # 路径/1.txt } header_json = json.dumps(header_dic) header_bytes = header_json.encode('utf-8') # 第二步:先发送报头的长度 conn.send(struct.pack('i',len(header_bytes))) # 第三步:再发报头 conn.send(header_bytes) # 第四步:再发送真实的数据 with open('%s/%s'%(share_dir, filename),'rb') as f: for line in f: conn.send(line) except ConnectionResetError: # 适用于windows操作系统 break conn.close() gd_server.close()"color: #ff0000">总结以上所述是小编给大家介绍的python 通过 socket 发送文件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无python 通过 socket 发送文件的实例代码的评论...
更新日志
2024年10月02日
2024年10月02日
- 孙悦.1996-伙伴【正大国际】【WAV+CUE】
- 纪钧瀚《钢琴阅读时光 雨中书店聆听轻音乐》[FLAC/分轨][399.62MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[320K/MP3][87.4MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[FLAC/分轨][184.94MB]
- 陈慧娴.2018-Priscilla-Ism演唱会3CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 郑秀文.1999-我应该得到(国)【华纳】【WAV+CUE】
- 陈家慧.2011-钢琴酒吧2CD【龙吟唱片】【WAV+CUE】
- 证声音乐图书馆《雨季 蓝调吉他 Rainy Blues》[320K/MP3][45.01MB]
- 证声音乐图书馆《雨季 蓝调吉他 Rainy Blues》[FLAC/分轨][109.13MB]
- 赞多《序章》[320K/MP3][45.54MB]
- 许巍.2004-每一刻都是崭新的【步升大风】【WAV+CUE】
- 群星.2024-四方馆影视原声带【韶愔音乐】【FLAC分轨】
- 陈雷.1997-安锁咧【金圆唱片】【WAV+CUE】
- 关淑怡.2013-MY.FAVORITE.SK.3CD【环球】【WAV+CUE】
- Sweety.2006-花言乔语【丰华】【WAV+CUE】