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共享引用(多个变量引用)示例代码
Dec 04 Python
python使用pil生成缩略图的方法
Mar 26 Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
名片管理系统python版
Jan 11 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
Python实现程序判断季节的代码示例
Jan 28 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
python识别围棋定位棋盘位置
Jul 26 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
如何利用python实现Simhash算法
Jun 28 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
谈谈python垃圾回收机制
2020/09/27 Python
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
办公室主任先进事迹
2014/01/18 职场文书
运动会方阵解说词
2014/02/12 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
文明村创建实施方案
2014/03/27 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
文明倡议书
2015/01/19 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书