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+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
Python实现通讯录功能
Feb 22 Python
对python中执行DOS命令的3种方法总结
May 12 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
利用Django-environ如何区分不同环境
Aug 26 Python
详解django中使用定时任务的方法
Sep 27 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
Python 过滤错误log并导出的实例
Dec 26 Python
Python求凸包及多边形面积教程
Apr 12 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
让PHP更快的提供文件下载的代码
2012/06/13 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
常用jQuery选择器总结
2014/07/11 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
基于JavaScript 实现拖放功能
2019/09/12 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
python中的协程深入理解
2019/06/10 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
浅析Python的命名空间与作用域
2020/11/25 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
妇产医师自荐信
2014/01/29 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
应届生求职信范文
2014/06/30 职场文书
党员承诺书范文2015
2015/04/27 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
详解MindSpore自定义模型损失函数
2021/06/30 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
利用Python实时获取steam特惠游戏数据
2022/06/25 Python