一、网络基础

学习网络编程,了解一些网络基础的知识是必不可少的,下面学习一些基础的网络知识:

1、我们的电脑里有网卡,网卡里有mac地址;

2、我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。

  IP: 192.168.13.84IPv400000000.00000000.00000000.000000000~255    0~255    0~255    0~255IPv600000000.00000000.00000000.00000000.00000000.00000000子网掩码:255.255.255.0网关IP:192.168.13.1局域网内、城域网、广域网:广播单播广播风暴arp协议

3、DNS
网络连接:

          - 域名解析www.baidu.com  220.181.57.216- 连接sk = socket.socket()sk.connect(('47.95.64.113',80))...问题来了,域名和IP的对应关系在哪里?本地:Win本地电脑:C:\Windows\System32\drivers\etc\hosts11.22.33.44 www.baidu.comLinux/Mac电脑:/etc/hostsDNS服务器:全球顶级DNS服务器13台www.luffycity.com  47.95.64.113创业:  a. 租一个服务器+公网IPb. 租域名域名+IP解析
总结:
  1. DHCP,自动为局域网内的电脑分配IP。

  2. 网关,路由器中连接交换机的口。

  3. IP,4个点分的十进制表示 192.11.111.11

  4. 子网掩码,

  IP: 192.168.13.99掩码:255.255.255.0
     将挡住的IP位数作为网段。未挡住的部分作为可变的值。
  1. 局域网/城域网/广域网

  2. arp协议

  3. DNS

二、多线程

线程,英文是Thread,每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。下面就是一个多线程的示例:

 import timeimport threadingdef task(a1,a2,a3):time.sleep(2)print('去拿快递')def work():print('去写作业')def wm():print('去拿外卖')# 创建一个线程  让该线程去执行任务:函数t1 = threading.Thread(target=task,args=(1,2,3,))t1.start()  # 去执行吧# 创建一个线程  让该线程去执行任务:函数t2 = threading.Thread(target=work)t2.start()  # 去执行吧# 创建一个线程  让该线程去执行任务:函数t3 = threading.Thread(target=wm)t3.start()  # 去执行吧print('玩扇子')print('煽风点火')print('耍贱...')  # 分析:该程序创建了三个线程,分别去执行不同的任务(函数),主线程可以继续向下走。

再看下面socket和线程配合的示例:

 import timeimport socketimport threadingdef task(conn):time.sleep(2)data = conn.recv(1024)print(data)conn.close()server = socket.socket()server.bind(('127.0.0.1',8001,))server.listen(5)while True:conn,addr = server.accept()t = threading.Thread(target=task,args=(conn,))t.start()

注意:以后如果想要提高效率可以使用多线程。如下示例,使用多线程下载多个图片:

"""安装requests模块:在终端执行如下命令自动安装(连网状态):pip3 install requests"""import threadingimport requestsimport uuidurl_list = ['https://www3.autoimg.cn/newsdfs/g28/M05/F9/98/120x90_0_autohomecar__ChsEnluQmUmARAhAAAFES6mpmTM281.jpg','https://www2.autoimg.cn/newsdfs/g28/M09/FC/06/120x90_0_autohomecar__ChcCR1uQlD6AT4P3AAGRMJX7834274.jpg','https://www2.autoimg.cn/newsdfs/g3/M00/C6/A9/120x90_0_autohomecar__ChsEkVuPsdqAQz3zAAEYvWuAspI061.jpg',
]def task(url):"""1. DNS解析,根据域名解析出IP2. 创建socket客户端    sk = socket.socket()3. 向服务端发起连接请求 sk.connect()4. 发送数据(我要图片) sk.send(...)5. 接收数据            sk.recv(8096)接收到数据后写入文件。"""ret = requests.get(url)file_name = str(uuid.uuid4()) + '.jpg'with open(file_name, mode='wb') as f:f.write(ret.content)for url in url_list:t = threading.Thread(target=task, args=(url,))t.start()多线程下载图片

补充:uuid模块,模块uuid4()可以随机生成一个字符串,上述示例利用此模块给下载的图片命名:

    import uuidv = str(uuid.uuid4())print(v)  # d6b404d7-aa20-46f8-a135-90b624982f24

三、ftp任务铺垫

   1. 多用户同时登陆:     socketserver2. 用户登陆,加密认证: md5加密3. 上传/下载文件,保证文件一致性:md5摘要4. 传输过程中现实进度条6. 不同用户家目录不同,且只能访问自己的家目录, 上传下载时,必须在自己目录: `os.path.join('D:\sylar\nbftp_server\users',username,'a.text')7. 对用户进行磁盘配额、不同用户配额可不同:   上传、下载之前做文件夹大小的判断。8. 用户登陆server后,可在家目录权限下切换子目录: 9. 客户端向服务端发命令,subprocess.popen(命令)10. 查看当前目录下文件,新建文件夹              : 执行命令11. 删除文件和空文件夹                          : 执行命令12. 充分使用面向对象知识+反射13. 支持断点续传                               :断点续传

python 复习——网络编程(三)——网络基础、多线程、ftp任务铺垫相关推荐

  1. Java:网络编程,网络编程三要素,TCP协议,UDP协议

    day23 网络编程 网络编程三要素: IP地址 端口号 通信协议 TCP协议 UDP协议 网络编程 1.网络:计算机网络,由在不同地理位置.不同的计算机主机,互联形成的一个计算机系统.有通讯和数据共 ...

  2. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

  3. 13、python网络编程之网络通信协议

    python网络编程之网络通信协议 一.C/S与B/S架构 B/S架构 B/S架构中省去了客户端的开发,是基于浏览器(Browser)与服务端完成数据的通信 二.网络通信 什么是网络 网络是用物理链路 ...

  4. 【Linux网络编程】网络基础 和 socket套接字 服务器与客户端 详细案例说明

    目录 前言 一.网络编程三要素 1.IP地址 2.通信协议 3.端口号 二.SOCKET套接字 SOCKET概述 SOCKET分类 三.代码实现 1.编程思路 2.建立服务器 服务器完整代码 3.建立 ...

  5. 网络编程模型及网络编程三要素

    网络模型 计算机网络之间以何种规则进行通信,就是网络模型研究问题. 网络模型一般是指 OSI(Open SystemInterconnection开放系统互连)参考模型 TCP/IP参考模型 网络模型 ...

  6. 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写

    参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...

  7. linux网络编程二:基础socket, bind, listen, accept, connect

    linux网络编程二:基础socket, bind, listen, accept, connect 1. 创建socket #include <sys/types.h>     #inc ...

  8. Java——网络编程三要素

    * A:计算机网络* 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统.网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.* ...

  9. 22.1 网络编程:软件结构、网络通信协议、UDP与TCP协议、(网络编程三要素:协议、ip地址、端口号)、查看ip地址、检测网络是否连通、判断ip是否可用

    目录 网络编程 软件结构 网络通信协议 TCP/IP协议 协议分类 UDP TCP 网络编程三要素 协议 IP地址 列:查看本机ip地址 检查网络是否连通.判断ip是否可用 端口号 网络编程 软件结构 ...

最新文章

  1. 皮一皮:打完疫苗千万别睡太死...
  2. 流媒体技术学习笔记之(九)减少VLC 延迟的方法
  3. 你应该知道的缓存进化史
  4. php 初始二维数组长度,php二维数组排序与默认自然排序的方法介绍
  5. SpringBoot:Actuator 监控管理工程各项信息
  6. 用python实现朴素贝叶斯算法_朴素贝叶斯算法 python 实现
  7. C# 面向对象之多态
  8. ★LeetCode(784)——字母大小写全排列(JavaScript)
  9. 昨天发生的四件大事!
  10. .Net remoting, Webservice,WCF,Socket区别
  11. 论耐力,哺乳动物中人类可能是第一
  12. 算加权成绩(MATLAB)
  13. 2021-10-26 模电共射放大电路部分
  14. csp202112-1:序列查询 题解
  15. html自动改成繁体怎么做,如何将繁体字转换成简体字,繁体字转换器在线转换,简体字转换为繁体字...
  16. timenote时光笔记+android,Time Note时光笔记软件怎么样?Time Note时光笔记有哪些功能特色?...
  17. 20届icoding 实验1
  18. 为什么很多人会觉得FPGA难学?
  19. 2020前端知识体系(图谱)
  20. 三百个好用的免费软件名单[转]

热门文章

  1. 如何用纯 CSS 创作一个小球上台阶的动画 1
  2. ubuntu16.04下使用mktorrent代替utorrent做种生成.torrent文件
  3. python 元类与装饰器
  4. python json变为csv具体代码
  5. word中通过宏对某章节下图片批量插入题注
  6. traefik添加证书报错:404 page not found
  7. 从android到ios
  8. word主控文档计算机二级,2017高会《职称计算机》Word 2003:主控文档和子文档
  9. python运行.py文件时无法向控制台打印内容
  10. 实验室三维磁场电磁铁的主要用途及技术指标