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 list语法学习(带例子)
Nov 01 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
Python实现的单向循环链表功能示例
Nov 10 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
django框架中间件原理与用法详解
Dec 10 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
利用Python计算KS的实例详解
Mar 03 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
Python机器学习之KNN近邻算法
May 14 Python
Python中的datetime包与time包包和模块详情
Feb 28 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中显示数组与对象的实现代码
2011/04/18 PHP
php开发过程中关于继承的使用方法分享
2011/06/17 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
Python制作刷网页流量工具
2017/04/23 Python
python实现各进制转换的总结大全
2017/06/18 Python
Python多线程扫描端口代码示例
2018/02/09 Python
详解python分布式进程
2018/10/08 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
天鹅的故事教学反思
2014/02/04 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
公司收款委托书范本
2014/09/20 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
求职简历自我评价范文
2015/03/10 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Golang 对es的操作实例
2022/04/20 Golang
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js