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 相关文章推荐
python 域名分析工具实现代码
Jul 15 Python
python实现得到一个给定类的虚函数
Sep 28 Python
深入浅析Python中的yield关键字
Jan 24 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
python如何制作英文字典
Jun 25 Python
python检测服务器端口代码实例
Aug 31 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
Pandas数据结构之Series的使用
Mar 31 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
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
php的常量和变量实例详解
2017/06/27 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript 写类方式之四
2009/07/05 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
Python下使用Psyco模块优化运行速度
2015/04/05 Python
开始着手第一个Django项目
2015/07/15 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python如何给函数库增加日志功能
2020/08/04 Python
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
database面试题
2013/03/28 面试题
大专生工程监理求职信
2013/10/04 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
个人查摆剖析材料
2014/02/04 职场文书
小学音乐教学反思
2014/02/05 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
优秀班主任材料
2014/12/16 职场文书
投资申请报告
2015/05/19 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
导游词之北京明十三陵
2019/10/28 职场文书