Python使用socket_TCP实现小文件下载功能


Posted in Python onOctober 09, 2020

服务器

import socket
 
# 1.创建套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.绑定端口
server.bind(('127.0.0.1', 7890))
# 3.变为被动监听模式
server.listen(4)
while True:
  # 4.等待客户端链接
  s_new, addr = server.accept()
  print('用户【{}】已经成功连接!!'.format(addr[0]))
  while True:
    # 5.接受消息
    try:
      # 若客户端强行断开连接服务器不会崩溃
      recv_data = s_new.recv(1024).decode('utf-8')
      if recv_data:
        print('来自【{}】的用户表示要下载: 【{}】'.format(addr[0], recv_data))
        # 6.发送消息
        try:
          f = open(recv_data, 'rb')
          content = f.read()
          send_data = s_new.send(content)
          f.close()
          print('下载成功!')
        except Exception as result:
          send_data = s_new.send('Non'.encode('utf-8'))
          print('未找到要下载的文件')
      else:
        print('用户已经正常退出!')
        break
    except Exception as res:
      print('用户已经退出连接!')
      break
  s_new.close()
# 7,关闭套接字
server.close()

客户端

import socket
# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址
s.connect(('127.0.0.1', 7890))
while True:
 
  # 发送数据
  send_data = str(input('请输入想要下载的文件名:'))
  if send_data == 'exit':
    print('已退出下载!')
    break
  s.send(send_data.encode('utf-8'))
 
  # 接收数据
  recv_data = s.recv(2048)
  if recv_data == 'Non'.encode('utf-8'):
    print('未找到要下载的文件!')
  else:
    with open('【new】' + send_data, 'wb') as f:
      f.write(recv_data)
      print('[{}]下载成功!'.format(send_data))
      f.close()
 
# 关闭套接字
s.close()

运行结果(服务器):

Python使用socket_TCP实现小文件下载功能

运行结果(客户端):

Python使用socket_TCP实现小文件下载功能

文件结果;

Python使用socket_TCP实现小文件下载功能

到此这篇关于Python使用socket_TCP实现小文件下载功能的文章就介绍到这了,更多相关Python小文件下载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
windows10下python3.5 pip3安装图文教程
Apr 02 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
Python中GIL的使用详解
Oct 03 Python
python实现连连看辅助(图像识别)
Mar 25 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python英语单词测试小程序代码实例
Sep 09 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
python实现简易版学生成绩管理系统
Jun 22 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
Python可视化学习之seaborn调色盘
Feb 24 Python
python实现逻辑回归的示例
Oct 09 #Python
Django生成数据库及添加用户报错解决方案
Oct 09 #Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 #Python
python实现数据结构中双向循环链表操作的示例
Oct 09 #Python
Python collections模块的使用方法
Oct 09 #Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 #Python
Python中Selenium模块的使用详解
Oct 09 #Python
You might like
如何使用php输出时间格式
2013/08/31 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
聘用意向书范本
2014/04/01 职场文书
党在我心中演讲稿
2014/09/02 职场文书
员工工作能力评语
2014/12/31 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
python中Matplotlib绘制直线的实例代码
2021/07/04 Python