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类继承与子类实例初始化用法分析
Apr 17 Python
浅谈python中的占位符
Nov 09 Python
python删除字符串中指定字符的方法
Aug 13 Python
django如何连接已存在数据的数据库
Aug 14 Python
python远程邮件控制电脑升级版
May 23 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python命令 -u参数用法解析
Oct 24 Python
python集成开发环境配置(pycharm)
Feb 14 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
python pip如何手动安装二进制包
Sep 30 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
基于php实现的验证码小程序
2016/12/13 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
手机端转换rem适应
2017/04/01 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
python的scipy实现插值的示例代码
2019/11/12 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
班班通校本培训方案
2014/03/12 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
golang日志包logger的用法详解
2021/05/05 Golang