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中计算三角函数之cos()方法的使用简介
May 15 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
Python读取实时数据流示例
Dec 02 Python
Python2与Python3的区别点整理
Dec 12 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
python super()函数的基本使用
Sep 10 Python
python通过函数名调用函数的几种场景
Sep 23 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
Python实现科学占卜 让视频自动打码
Apr 09 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概述.
2006/10/09 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
文本加密解密
2006/06/23 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
python访问系统环境变量的方法
2015/04/29 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
python去掉空白行的多种实现代码
2018/03/19 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python自动登录QQ的实现示例
2020/08/28 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
Java servlet面试题
2012/03/04 面试题
应届毕业生自荐信例文
2014/02/26 职场文书
少先队活动总结
2014/08/29 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
联欢会开场白
2015/06/01 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android