话不多说,先看代码:

客户端:

import socket

def main():

#creat:

download_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#link:

serv_ip=input("please input server IP")

serv_port=int(input(("please input server port")))

serv_addr=(serv_ip,serv_port)

download_client.connect(serv_addr)

#send and receive

filename=input("please input filename")

download_client.send(filename.encode("utf-8"))

download_data=download_client.recv(1024)

if download_data:

with open("receive_"+filename,"wb") as f:

f.write(download_data)

download_client.close()

if __name__ == '__main__':

main()

服务器:

import socket

def send_data(server_socket):

while True:

filename = server_socket.recv(1024).decode("utf-8")

print("用户请求下载对象是%s"%filename)

if filename:

with open(filename, "rb") as f:

file_data = f.read()

server_socket.send(file_data)

else:

server_socket.close()

break

def main():

#creat

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#bind

server.bind(("",4399))

#listen

server.listen(128)

#accept

while True:

print("waiting for quest")

server_socket,client_ip=server.accept()

print("connected")

send_data(server_socket)

#close

server.close()

if __name__ == '__main__':

main()

前几天有写一个基于UDP的简单程序,今天学习了TCP,TCP与UDP 的区别与联系其实已经写得很清楚了,这里不再多说。今天使用的TCP,在文件下载方面应用更加广泛(可靠)。客户端分析:

1.注意到TCP协议是面向连接的,也就是每一个TCP,从客户端发送请求,需要与服务器建立一个连接(UDP不用)。所以这一点体现在程序中就有了一个connect动作

2.目前程序recv方法仅支持1kb,收发大文件会出错,这点在我之后搞清楚大文件下载再说

服务器分析:

1.服务器是需要绑定的,也就是需要把他的地址定下来,这样客户端才会知道每次要和谁建立链接。

2.socket之listen,之前的网络链接我们都是主动的去连接别人,如connect(),服务器是不需要连接别人的,所以他是一个被动连接,等着别人来连接他。listen就是拿来转换的。后面的参数是参数指定队列中最多可容纳的等待接受的传入连接数。若要确定可指定的最大连接数,要参照 MaxConnections 值。也就是等着连接的最大数。

3.accept()返回参数是一个元组,前面我们就用两个变量对他进行拆包了,第一个是一个socket对象,第二个是连接本服务器的地址。对于这个新的socket对象可以理解为服务器主socket接到连接后派遣了一个专员socket来对这个客户端进行服务。

4.一个服务器可以被多个客户端连接,每个客户端都会被分配一个专员进行服务。

总结:

客户端流程:创建套接字(可绑定)—连接服务器—收发—关闭

服务器流程:创建套接字—绑定—监听连接—接收连接—收发—关闭

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 详解如何用python实现一个简单下载器的服务端和客户端

本文地址: http://www.cppcns.com/jiaoben/python/282929.html

python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...相关推荐

  1. python网上批量下载表格_python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  2. python手机版怎么用-手机使用python操作图片文件(pydroid3)过程详解

    起因 前几天去国图拍了一本书,一本心理学方面的书,也许你问我为什么不去买一本,或者去网上找pdf. 其实吧,关于心理学方面的书可以说在市面上一抓就是一堆,至于拍这本书两个原因,一个是没有什么收藏价值不 ...

  3. php防止文件盗链,详解PHP防止盗链防止迅雷下载的方法

    防止盗链: 原理:当服务器要我们下载文件的时候,我们会拿到一个链接,然后我们通过这个链接找到这个文件,然后将它下载下来.那么也就是说这个链接必须要有的,那么如何防止盗链呢?那就是给你的链接并不是真正的 ...

  4. 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    作者 | 天元浪子 来源 | CSDN博文精选 [编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Python.Java等语言都能支 ...

  5. 万字长文详解如何用 Python 玩转 OpenGL | CSDN 博文精选

    作者 | 天元浪子 责编 | 伍杏玲 出品 | CSDN 博客 [CSDN 编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Pyth ...

  6. python 如何批量提取文件中的字符_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  7. python脚本设置环境变量_详解如何设置Python环境变量?

    家好,我是Yivies!相信大家多多少少遇到过这样的情况吧?就是在安装了python之后想完整在命令提示符直接输入python就可以使用的操作,但是会出现输入了python之后找不到命令的情况!例如这 ...

  8. python线性整数规划求解_实例详解:用Python解决整数规划问题!

    我们将使用整数规划来做出最佳决策 整数规划(IP)问题是所有变量都被限制为整数的优化问题(指规划中的变量(全部或部分)限制为整数,若在线性模型中,变量限制为整数,则称为整数线性规划).IP问题是有关于 ...

  9. 如何用python创建一个下载网站-详解如何用python实现一个简单下载器的服务端和客户端...

    话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...

最新文章

  1. Auto ML自动特征工程
  2. aspx页面引用html页面
  3. centos7.4编译mysql5.6,centos7编译安装mysql5.6
  4. php 修改图像大小,PHP图像大小调整
  5. [转]程序员最容易犯的几个技术上的错误
  6. 推荐的字符与字符串处理方式
  7. Rocketmq如何保证消息不丢失,如何保证消息不被重复消费
  8. 【技巧帖】关于Mac如何内录电脑内部声音
  9. 零成本建立医学数据库之实践
  10. Flask入门(三)~补充及虚拟环境
  11. mysql 复制方式_MySQL数据库复制表的几种方式讲解
  12. C++青少年编程课程体系与教案
  13. webrtc 中的scoped_refptr
  14. 各种Hash函数和代码
  15. 单通道图片转换为3通道图片,实现灰度图上添加彩色标注
  16. Android studio:Button 按钮英文字符自动大写的解决方法
  17. 解决antimalware service executable程序占用CPU过高(有效)
  18. Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组
  19. 什么是IP封锁, 如何解封?
  20. 听声音做钥匙?!慢放开锁音轨,黑客就能破解常用门锁

热门文章

  1. 用Python清理收藏夹里已失效的网站,快测试一下你的收藏夹吧
  2. 前端网页自动刷新的3种方法
  3. 在线视频图片测试链接
  4. MySQL数据库的初步了解
  5. 处理图片加载中与加载失败的组件
  6. linux中where作用,linux基础命令——whereis命令的使用介绍
  7. python时间日期格式,python日期时间格式化
  8. X-Frame-Options(点击劫持)
  9. 想要开咖啡店要怎么开始
  10. codeforces439A