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 相关文章推荐
pandas多级分组实现排序的方法
Apr 20 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
python进程间通信Queue工作过程详解
Nov 01 Python
python中return的返回和执行实例
Dec 24 Python
Python log模块logging记录打印用法解析
Jan 20 Python
Python unittest框架操作实例解析
Apr 13 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
浅谈Python数学建模之固定费用问题
Jun 23 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
用jscript启动sqlserver
2007/06/21 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
商务会议邀请函
2014/01/09 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
单位租房协议书范本
2014/12/04 职场文书
新年寄语2016
2015/08/17 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS