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 相关文章推荐
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
python魔法方法-自定义序列详解
Jul 21 Python
python保存网页图片到本地的方法
Jul 24 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
django表单的Widgets使用详解
Jul 22 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
ipad上运行python的方法步骤
Oct 12 Python
Python接口自动化测试的实现
Aug 28 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python eventlet绿化和patch原理
Nov 21 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设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
php扩展开发入门demo示例
2019/09/23 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
List Installed Software Features
2007/06/11 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
python实现同时给多个变量赋值的方法
2015/04/30 Python
python 编码规范整理
2018/05/05 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
django从后台返回html代码的实例
2020/03/11 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
初中同学聚会感言
2014/02/11 职场文书
安全教育感言
2014/03/04 职场文书
学习委员竞选稿
2015/11/20 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL