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使用random和tertools模块解一些经典概率问题
Jan 28 Python
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
使用python模拟高斯分布例子
Dec 09 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
python 实现Harris角点检测算法
Dec 11 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
php桥接模式应用案例分析
2019/10/23 PHP
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Python使用剪切板的方法
2017/06/06 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
python实现感知器算法(批处理)
2019/01/18 Python
python 获取等间隔的数组实例
2019/07/04 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
党校学习思想汇报
2014/01/06 职场文书
会计核算科岗位职责
2014/03/19 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
企业计划生育责任书
2015/05/09 职场文书
教师读书活动心得体会
2016/01/14 职场文书
Django 实现jwt认证的示例
2021/04/30 Python