python实现文件上传下载的功能socket编程(基础版)

2023-05-16

环境介绍:

项目路径:

在这里插入图片描述
服务端执行过程:
在这里插入图片描述
客户端执行过程:
在这里插入图片描述
上传成功截图:
在这里插入图片描述

服务端代码:

import socket

file_server = socket.socket()
file_server.bind(('0.0.0.0',9999))
file_server.listen(5)
while True:
    print('Waiting for the connection..........')
    conn,addr=file_server.accept()
    print('成功连接到 :',conn)
    print('客户端IP为:',addr)
    while True:
        file_name = conn.recv(1024).decode()
        if file_name == 'exit':  #对应client端退出传输时的Q,那么server端应该去等待别的连接
            conn.send(('结束传输!!!').encode())
            print("等待新连接!!!")
            conn.close()
            break
        print('file_name:',file_name)
        f  = open(file_name,'wb')
        while True:
            data = conn.recv(1024)
            if data == b'##':
                break
            f.write(data)
        conn.send('传输成功!!!'.encode())
        print('传输成功!!!')

file_server.close()

客户端代码:

import sys,os,socket,time

file_client = socket.socket()
file_client.connect(('127.0.0.1',9999))

while True:
    #选择文件,暂时写死测试,后续加入选择功能
    #写绝对路径名+文件名
    file_name = input("选择传输文件的文件名>>:")
    if file_name == 'q':
        break
    file_client.send(os.path.basename(file_name).encode())   #send 1告知对方文件名

    f = open(file_name,'rb')

    while True:
        print("传输中!!!")
        data = f.read(1024)
        if not data:
            break

        file_client.send(data)          #send 2发送数据
    time.sleep(0.1)#防止粘包
    file_client.send("##".encode())####   send 3标志传输完毕
    falg = file_client.recv(1024).decode()
    print(falg)
    f.close()
file_client.send(b'exit')
print(file_client.recv(1024).decode())
file_client.close()

这是实现文件上传的基本代码,可以对其进行后续优化,比如运用函数,类,GUI…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python实现文件上传下载的功能socket编程(基础版) 的相关文章

  • 分享关于AI的那些事儿

    机器人很厉害 给人治病的ibm 的Watson 沃森 击败世界围棋冠军的AlphaGo阿尔法狗 陪你聊天的机器人 数据标注 木马识别 恶意访问拦截 智能家居 但是17年首次出现了机器人获得国籍 这个机器人叫做索菲亚 这是一个类似人类的机器人
  • String Evolver, My First Genetic Algorithm

    When reading Evolutionary Computation for Modeling and Optimization 1 I found following problem in section 1 2 3 A strin
  • MongoDB特点及功能介绍

    一 MongoDB 介绍 1 基本概念 MongoDB是一个高性能 xff0c 开源 xff0c 无模式的文档型数据库 xff0c 是当前NoSQL数据库产品中最热门的一种 它在许多场景下可用于替代传统的关系型数据库或键 值存储方式 xff
  • 线程同步以及线程调度相关的方法

    wait xff1a 使一个线程处于等待 xff08 阻塞 xff09 状态 xff0c 并且释放所持有的对象的锁 xff1b sleep xff1a 使一个正在运行的线程处于睡眠状态 xff0c 是一个静态方法 xff0c 调用此方法要处
  • 智能医疗辅助诊断——调查与思考

    背景 为什么要做智能医疗 xff1f 优质医疗资源不足且增长缓慢各地方医疗资源分配不均客观条件满足 xff0c 人工智能技术发展 xff0c 算法 算力 数据齐备 目录 指出 xff0c 医用软件按照预期用途分为辅助诊断类和治疗类 诊断功能
  • WebMvcConfigurer配置HandlerInterceptor拦截器失效

    1 前言 Springboot2 0之前 xff0c 实现拦截器功能的配置类是通过继承 extends WebMvcConfigurerAdapter类完成的 xff0c 最近项目把Springboot升级到了Springboot2 X x
  • ubuntu deepin wechat中文乱码解决

    deepin wechat 中文乱码解决方案 方案一 执行以下命令打开文件 gedit opt deepinwine tools run sh 找到WINE CMD 修改为 WINE CMD span class token operato
  • 使用k-近邻算法识别手写数字

    本文摘自 机器学习实战 案例 xff0c 对其进行了代码更新与注释 实战介绍 使用k 近邻分类器构造手写识别系统 xff0c 为了简单起见 xff0c 系统只识别0 9 xff0c 需要识别的数字已经使用图形处理软件 xff0c 处理成具有
  • Android开发:Fragment中优雅使用ViewBinding【Java】

    目录 前言 官网示例 封装 前言 ViewBinding可以帮助我们减少代码中的大部分findViewById xff0c 官网中提到了它的优点和缺点 xff1a Null 安全 xff1a 由于视图绑定会创建对视图的直接引用 xff0c
  • c++ 读取UTF-8编码文本

    这个是苏州大学一个有关NLP的选修课的第一个作业 xff0c 刚开始有点摸不着头脑 xff0c 随着慢慢接触有点理解了老师的用心 任务是给定一个给一段汉语文本 xff0c 将文本切分开为单个character xff0c 并在charact
  • 一次完整的http请求全过程(知识体系版)

    最差的面试体验 面试官评价 xff1a 除了学历 xff0c 和培训班出来的没区别 确实 xff0c 很多东西我只是会用 面完回来 xff0c 我发现我确实连一个完整的http请求如何发送都不明白 失败并不可怕 但是一定得把失败的悲痛化成力
  • python 根据网易云歌曲的ID 直接下载歌曲

    特么的 xff0c xff0c xff0c 上次写了一堆 xff0c 发现 xff0c 原来下载网易云的歌曲根本不用这么费劲 xff0c xff0c 直接用 http music 163 com song media outer url i
  • The POM for commons-codec:commons-codec:jar:1.15-SNAPSHOT is missing

    问题描述 Maven打包的时候常常报异常 The POM for commons codec commons codec jar 1 15 SNAPSHOT is missing no dependency information avai
  • python 用pyinstaller打包多进程multiprocessing、tkinter scrapy爬取豆瓣TOP250部电影信息

    参考文章 xff1a https blog csdn net La vie est belle article details 79017358 https blog csdn net weixin 42052836 article det
  • SSM --Spring 第一天

    1 spring概述 1 1 Spring是什么 xff08 理解 xff09 Spring是分层的 Java SE EE应用 full stack 全栈的 xff0c 什么都会的 xff0c 管家的 轻量级开源框架 xff0c 以 IoC
  • springboot项目中日志SLF4J相关的错误 multiple SLF4J bindings

    1 问题描述 控制台中可以正常运行 xff0c 不会报如下错误 xff0c 但打成jar包会显示错误 xff0c 如下 xff1a C span class token operator span Users span class toke
  • 数据库连接正常,但是无法从数据库中读取数据

    数据库连接正常 xff0c 但是无法从数据库中读取数据 在给别人写个java小课程设计碰到的一个问题 xff0c 在我这里运行的好好的 xff0c 到他那就出现 xff1a 当数据连接正常 xff0c 但是sql语句访问数据的时候 xff0
  • MySQL跨服务器查询

    跨库查询 同服务器下跨数据库进行查询在表前加上数据库名就可以查询到数据 跨服务查询 mysql跨服务器进行查询提供了FEDERATED引擎进行映射表 xff0c 然后进行查询 mysql数据库federated引擎是默认关闭的 xff0c
  • 谷歌浏览器发送POST请求

    使用谷歌浏览器发送POST请求 F12打开控制台打开console输入以下代码并回车 var url 61 34 http localhost 8080 test test 34 var params 61 34 billIds 34 34
  • 手写一套简单的dubbo(含注册中心)之编程思想

    专栏目录 Dubbo基础 https blog csdn net qq 38310244 article details 125891802 Dubbo实战 https blog csdn net qq 38310244 article d

随机推荐

  • MySQL字符串拼接函数

    MySQL字符串拼接函数有以下三个 xff1a CONCATCONCAT WSGROUP CONCAT 1 CONCAT 说明 对指定字符进行拼接 语法 CONCAT str1 str2 语法说明 xff1a CONCAT 字符1 字符2
  • 日期正则表达式

    校验yyyy年MM月dd日 yyyy年MM月dd日 HH mm ss yyyy年M月d日 yyyy年M月d日 HH mm ss span class token punctuation span span class token opera
  • MySQL高效判断数据是否存在

    span class token keyword SELECT span IFNULL span class token punctuation span span class token punctuation span span cla
  • 64位Windows下安装xgboost详细参考指南(支持Python2.x和3.x)

    20170601更新 1 原博客在Python2 7环境下安装成功 xff0c xgboost版本为0 4 xff0c 本次安装升级为0 6 2 在Python3 5 3 6环境中有一些问题 xff0c 包括第一个python setup
  • RK3399 9.0 Setting修改一级菜单和二级菜单

    RK3399 9 0 Setting去掉一级菜单以及网络下二级菜单 xff0c 留下以太网二级菜单 rk3399 9 span class token punctuation span span class token number 0 s
  • java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list, references column ‘me

    报错信息 xff1a The error may involve defaultParameterMap The error occurred while setting parameters SQL select distinct mas
  • 设计模式-生产者与消费者模式

    最近正在看C 43 43 日志的开源代码 xff0c 其中多个线程需要向文件中写入日志信息 xff0c 该将该算法逻辑抽象出来的话就是生产者与消费者设计模式 常见的生产者与消费者模式主要分为四类 xff1a 单生产者与单消费者模式 单生产者
  • 7月编程语言排行榜:Java第一,C#下滑到第六

    日前 xff0c TIOBE官网公布了7月编程语言指数排行榜 xff0c 前三名万年不变 xff0c 仍然是Java C C 43 43 先看一下前 20 名 前几名地位依旧稳固 xff0c 其中C还是以令人吃惊的速度 xff0c 持续大幅
  • java:synchronized 锁的原理

    synchronized 的基本认识 在多线程并发编程中 synchronized 一直是元老级角色 xff0c 很多人都会称呼它为重量级锁 但是 xff0c 随着 Java SE 1 6 对synchronized 进行了各种优化之后 x
  • sift = cv2.xfeatures2d.SIFT_create报错,解决

    本人原因opencv版本过高 xff0c 回退版本解决 先卸载原有opencv版本 pip uninstall opencv python pip uninstall opencv contrib python 回退版本到3 4 2 17解
  • CentOS 7.9上lightdm+ICEWM 桌面的配置+XManager远程

    IceWM是X Window系统的窗口管理器 IceWM的目标是速度 xff0c 简单 xff0c 并且不妨碍用户 它带有一个带寻呼机的任务栏 xff0c 全局键绑定和每窗口键绑定和动态菜单系统 应用程序窗口可以通过键盘和鼠标进行管理 窗口
  • windows下使用powershell 操作服务器进行上传或下载

    1 上传文件使用scp命令 43 本地路径 43 服务器用户名称 64 服务器Ip xff1a 上传路径 2 下载文件到本地 使用scp命令 43 服务器用户名称 64 服务器Ip xff1a 文件路径 43 下载到本地的路径 最后的点表示
  • 佛系解决 DataBinding 无法生成 Activity****Binding 类

    起初呢 xff0c ActivityMainBinding 该类始终无法生成 于是确定一下几个地方 build gradle android dataBinding enabled 61 true 布局文件名称 lt layout gt l
  • 宇宙最强pyqt5的安装(一)!!!

    前期准备工作 xff1a pythonIDE3 5以上版本开发环境pycharm编程知识熟悉python基本语法 在线安装pyqt5 安装sip C Users xxx gt pip install sip Collecting sip D
  • Win10下部署TensorFlow以及一些避坑小指南

    第一步 xff0c 下载Anaconda3 Anaconda官网目前最新的版本是Python3 6的 xff0c 想要历史版本的 xff0c 去下面的网站下载 xff1a https repo continuum io archive 我们
  • SpringBoot如何整合邮箱服务实现登录验证功能

    写在前面 这里主要讲解大致思路 详细代码 xff08 目前部分功能还在开发完善中 xff09 请见这里 如果个人用户还是想白嫖短信服务的话 xff0c 可以看看我的这篇博客 一 开启 POP3 SMTP服务 获得的授权码 这里以qq邮箱为例
  • 手动创建和挂载SWAP分区

    手动创建和挂载SWAP分区 在安装系统的时候很难决定多大的交换空间 xff0c 往往需要根据服务器实际负载 运行情况 以及未来可能应用来综合考虑 swap 分区的大小 xff0c 所以这里参考推荐最小 swap 大小更实际一些 xff1a
  • python中处理字符编码问题

    NO 1认识字符编码 GBK win默认中文字符编码是 xff1a GBK Unicode xff08 统一码 万国码 单一码 xff09 是计算机科学领域里的一项业界标准 xff0c 包括字符集 编码方案等 Unicode 是为了解决传统
  • python中if not的用法

    python中空的概念 xff1a 在python中 xff1a None False 0 空列表 空字典 空元祖 都相当于false coding utf 8 x 61 39 39 0 False None 1 x为真 故not x 为假
  • python实现文件上传下载的功能socket编程(基础版)

    环境介绍 xff1a 项目路径 xff1a 服务端执行过程 xff1a 客户端执行过程 xff1a 上传成功截图 xff1a 服务端代码 xff1a import socket file server 61 socket socket fi