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遍历指定文件及文件夹的方法
May 09 Python
django 常用orm操作详解
Sep 13 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python enumerate函数功能与用法示例
Mar 01 Python
Python模块、包(Package)概念与用法分析
May 31 Python
django 微信网页授权登陆的实现
Jul 30 Python
Python模块future用法原理详解
Jan 20 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Python爬虫与反爬虫大战
Jul 30 Python
解决使用Pandas 读取超过65536行的Excel文件问题
Nov 10 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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抓取https的内容的代码
2010/04/06 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
详谈python read readline readlines的区别
2017/09/22 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
基于Python绘制个人足迹地图
2020/06/01 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
python tkinter实现连连看游戏
2020/11/16 Python
酒店总经理岗位职责
2014/03/17 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
我的收音机情缘
2022/04/05 无线电
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android