案例:文件下载器(代码片段)

lijianming180 lijianming180     2023-04-21     130

关键词:

案例:文件下载器

服务器 参考代码如下:

from socket import *
import sys


def get_file_content(file_name):
    """获取文件的内容"""
    try:
        with open(file_name, "rb") as f:
            content = f.read()
        return content
    except:
        print("没有下载的文件:%s" % file_name)


def main():

    if len(sys.argv) != 2:
        print("请按照如下方式运行:python3 xxx.py 7890")
        return
    else:
        # 运行方式为python3 xxx.py 7890
        port = int(sys.argv[1])


    # 创建socket
    tcp_server_socket = socket(AF_INET, SOCK_STREAM)
    # 本地信息
    address = ('', port)
    # 绑定本地信息
    tcp_server_socket.bind(address)
    # 将主动套接字变为被动套接字
    tcp_server_socket.listen(128)

    while True:
        # 等待客户端的链接,即为这个客户端发送文件
        client_socket, clientAddr = tcp_server_socket.accept()
        # 接收对方发送过来的数据
        recv_data = client_socket.recv(1024)  # 接收1024个字节
        file_name = recv_data.decode("utf-8")
        print("对方请求下载的文件名为:%s" % file_name)
        file_content = get_file_con 大专栏  案例:文件下载器tent(file_name)
        # 发送文件的数据给客户端
        # 因为获取打开文件时是以rb方式打开,所以file_content中的数据已经是二进制的格式,因此不需要encode编码
        if file_content:
            client_socket.send(file_content)
        # 关闭这个套接字
        client_socket.close()

    # 关闭监听套接字
    tcp_server_socket.close()


if __name__ == "__main__":
    main()

客户端 参考代码如下:

from socket import *


def main():

    # 创建socket
    tcp_client_socket = socket(AF_INET, SOCK_STREAM)

    # 目的信息
    server_ip = input("请输入服务器ip:")
    server_port = int(input("请输入服务器port:"))

    # 链接服务器
    tcp_client_socket.connect((server_ip, server_port))

    # 输入需要下载的文件名
    file_name = input("请输入要下载的文件名:")

    # 发送文件下载请求
    tcp_client_socket.send(file_name.encode("utf-8"))

    # 接收对方发送过来的数据,最大接收1024个字节(1K)
    recv_data = tcp_client_socket.recv(1024)
    # print('接收到的数据为:', recv_data.decode('utf-8'))
    # 如果接收到数据再创建文件,否则不创建
    if recv_data:
        with open("[接收]"+file_name, "wb") as f:
            f.write(recv_data)

    # 关闭套接字
    tcp_client_socket.close()


if __name__ == "__main__":
    main()

181119网络通信----多任务----进程案例多任务拷贝器(代码片段)

importmultiprocessing#导入进程模块importos#导入文件模块defmain():#1获取用户要拷贝的文件名字old_folder_name=input("你需要拷贝的文件夹的名字")#2创建一个新的文件夹try:new_folder_name=old_folder_name+"[复件]"os.mkdir(new_folder_name)#创建一个文件excep... 查看详情

爬虫案例:图片下载器(代码片段)

items.pyclassCoserItem(scrapy.Item):url=scrapy.Field()name=scrapy.Field()info=scrapy.Field()image_urls=scrapy.Field()images=scrapy.Field() spiders/coser.py#-*-coding:utf-8-*-fromscrapy.selectorimportSelectorimportscrapyfromscrapy.contrib.loaderimportItemLoaderfromCosplay.itemsimportCoserItemcla... 查看详情

jquery--选择器案例实战(代码片段)

1.案例需求  jquery最基础的选择器部分已经基本结束,来一个简单案例总结回顾下学的东西。 案例需求:  用一个按钮控制元素的显示与隐藏,页面如下,从第五个开始,不要最后一个,控制他们的显示和隐藏。2.代码... 查看详情

迭代器失效(附案例详解)(代码片段)

...两种迭代器失效合在一起的例子解决方案本文将使用具体案例来详细解读迭代器失效的各种原因迭代器指向内容意义改变下面我们看一段代码intmain() vector<int>v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_b 查看详情

爬虫-lxml库和贴吧图片下载案例(代码片段)

lxml库lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。lxml和正则一样,也是用C实现的,是一款高性能的PythonHTML/XML解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。lxmlpython... 查看详情

浅谈类加载器与类加载案例解析(代码片段)

...要的jar包之一,所以很有必要了解其目录结构:    案例1:publicclassClassLoaderTestpublicstaticvoidmain(String[]args)Stringstring=newString();System.out.println(string.getClass().getClassLoader());  输出:null  原因是启动类加载器由c++实现,并不... 查看详情

安卓案例:利用视图翻页器实现引导页(代码片段)

文章目录一、运行效果二、涉及知识点三、实现步骤(一)新建安卓应用(二)准备图片素材(三)基于模板创建引导页界面(四)基于模板创建主界面(五)创建共享参数工具类(六&#... 查看详情

rnn经典案例使用rnn模型构建人名分类器(rnn实战-姓名分类)(代码片段)

RNN经典案例-构建人名分类器前言Step1-数据处理Step2-定义网络结构Step3-定义损失函数Step4-定义优化器Step5-模型训练Step6-验证模型效果Step7-模型保存Step8-结果展示Step9-模型加载Step10-完整代码前言数据集下载地址:https://download.pyt... 查看详情

rnn经典案例使用rnn模型构建人名分类器(rnn实战-姓名分类)(代码片段)

RNN经典案例-构建人名分类器前言Step1-数据处理Step2-定义网络结构Step3-定义损失函数Step4-定义优化器Step5-模型训练Step6-验证模型效果Step7-模型保存Step8-结果展示Step9-模型加载Step10-完整代码前言数据集下载地址:https://download.pyt... 查看详情

181114案例下载文件后端编写(代码片段)

 一个简单的文件下载器importsocketdefmain():#1创建套接字tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2获取服务器的ipportdest_ip=input("请输入你的的服务器ip:")dest_port=input("请输入你的服务器port:")#3连接服务器tcp_socket.con 查看详情

tomcat与spring的类加载器案例(代码片段)

Tomcat与spring的类加载器案例接下来将介绍《深入理解java虚拟机》一书中的案例,并解答它所提出的问题。(部分类容来自于书中原文)Tomcat中的类加载器在Tomcat目录结构中,有三组目录(“/common/*”,“/server/*”和“shared/*”)... 查看详情

mr案例-求年度最高气温(代码片段)

文章目录一、提出任务二、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录(二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建最高温度映射器类5、创建最高温度归并器... 查看详情

8类加载器案例剖析(代码片段)

8.1、使用ClassLoader类中的getParent()方法获取父类加载器packagecom.shtec.classLoader;/***使用ClassLoader类中的getParent()方法获取父类加载器*注意:根类加载器是由C++编写的,其对象为null;*@authorsunhao**/publicclassTest04publicstaticvoidmain(String[]args)... 查看详情

hadoop大数据技术yarn案例实操(代码片段)

Yarn案例实操1.Yarn生产环境核心参数配置案例2.容量调度器多队列提交案例2.1需求2.2配置多队列的容量调度器2.3向Hive队列提交任务2.4任务优先级3.公平调度器案例3.1需求3.2配置多队列的公平调度器3.3测试提交任务4.Yarn的Tool接口案... 查看详情

web前端:jquery最强总结(每个要点都附带完全案例详细代码!)(代码片段)

...选择器同辈选择器属性选择器可见性选择器所有选择器的案例jQuery常用函数jQuery与js对象的转换jQuery中的事件常用DOM事件列表常用的jQuery事件方法jQuery操作DOM元素的增加元素的克隆元素的替换元素的删除jQuery效果隐藏和显示淡入... 查看详情

jquery选择器案例(代码片段)

一、预期效果实现一个效果,如下。 品牌列表默认精简显示,单击“显示全部品牌”按钮显示全部品牌,同时列表将推荐的品牌的名字高亮显示,按钮里的文字变成“精简显示品牌”。再次点击“精简显示品牌... 查看详情

6.flask案例(代码片段)

一.Flas案例(代码统计)1.用到的知识点  https://github.com/Suger-supreme/Flask 代码示例1.蓝图登录注销session认证数据展示上传上传后缀限制压缩到其他目录数据库连接池sql查询配置文件设置模板md5sql语句封装特殊装饰器 &nbs... 查看详情

设计模式---迭代器模式(代码片段)

...器模式前言介绍角色迭代器模式中的工厂模式学院遍历的案例分析解决方案基本介绍原理类图上面案例的类图案例实现代码案例总结应用实例Java集合中的迭代器模式角色说明Mybatis中的迭代器模式优点缺点前言很早之前,我... 查看详情