UDP发送与接收数据
本章主题
- 计算机发展史,计算机网络的发展及基础网络概念;
- 实现模块与模块之间,不通过 引用 却又能实现 彼此能够灵活访问 的 中间键;
- IP地址介绍及分类;
- 什么是 端口,端口 的作用是什么;
- 套接字函数
socket()
; - UDP 发送与接收数据。
关键词
- 客户端:Client
- 浏览器:Browser
- 服务端:Server
- 目标端口:dest_port
- 目标IP:dest_ip
- 源IP:scr_ip
- 网络通信协议:TCP/IP(Transmission Control Protocol/Internet Protocol) 、UDP
- 套接字函数:
socket()
- 创建套接字方法:
socket(family = socket.AF_INET, type = socket.SOCK_DGRAM)
- 套接字发送方法:
sendto()
- 数据:data
- 字节型:bytes
- 地址:address
- 关闭函数:
close()
前导:
现在有两个文件:
文件 a.py
a = "hello world"
print(a)
文件 b.py
print(a)
现在如果我想 文件 b 访问到 文件 a 里的内容该怎么做?
看到这,一定有读者朋友说:用模块啊 、用 “文件访问” 函数啊 ……
可现在如果我们 不使用 上面这些方法,那我们如何能实现 文件 b 访问到 文件 a 里的内容?
不通过导入模块的方式,如何实现在 a.py
中存数据,在 b.py
中读数据。
其实,不同的模块之间存在着 隔离,以保证各自代码之间的 独立性;
而想要实现不同的模块之间的能够 灵活的访问,就要借助 中间键 从而实现不同的模块之间的够灵活的 彼此访问。
这是 同一计算机内 不同模块 之间的访问,如果 不同计算机 之间进行传输通信,那么就会使用到 网络。比如QQ,微信等APP。
即然现在介绍模块之间的 中间键 时提到了 网络 和 各种软件,那我们顺带着也就简单的介绍一下 软件开发架构。
软件开发架构 分为 应用类程序 和 Web类程序;那什么又是 应用类程序 和 Web类程序呢?
应用类程序:如 QQ、百度云盘 、网易云音乐 等等这类需要下载安装包,并需要对它们进行安装后才能进行使用的程序;
Web类程序:如 网页版的百度、网页版的知乎、网页版的CSDN等等这类无需下载,直接通过网站地址就能够直接进行访问操作的程序。
因为这些 程序类型 的不同,我们在进行程序开发的过程中也涉及到了各种不同的 开发架构;比如说:基于上面这两种不同的 程序类型 就有一种 C/S 开发架构。那什么是 C/S 开发架构呢?顾名思义,C:Client 客户端,S:Server 服务端。那 客户端 是什么,服务端 又是什么呢?接下来我们也来简单的介绍一下:
C:Client 客户端;用户使用的 入口 或者 端口 就是 客户端;
S:Server 服务端;一直运行,等待服务别人的 服务器 端口。
刚刚简单的给大家介绍完了 C/S 开发架构,接下来再给大家简单的介绍另外一种开发架构:B/S 开发架构。那什么是 B/S 开发架构呢?
B:Browser 浏览器;接入网站地址的 入口 或者说是 端口;
S:Server 服务端;一直运行,等待服务别人的 服务器 端口。
典型的使用 B/S 开发架构的案例就是:网页版的百度、网页版的知乎、页游、网页传奇 这类无需下载 .exe
安装文件,但只要连接上网就能直接使用的 Web类程序。
使用 B/S 开发架构常用于 PC端 的开发;它的优势就是:统一入口。同样都是 程序,通过 B/S 开发架构的 程序 就无需再下载 .exe
安装文件,只需要明确 服务器端 的路径地址就可以直接通过 浏览器 对 程序 直接的进行访问和使用。
看完我对 C/S 开发架构 和 B/S 开发架构 的 简单介绍,我想此时一定会有读者朋友发问:B/S 开发架构 适用于 手机APP端 吗?
我们现在对手机端程序的使用还是一种基于 C/S 开发架构 的使用模式:应用市场 => 搜索指定程序 => 下载 .exe
安装文件 => 安装 => 使用。那 移动手机端 现在有没有使用 B/S 开发架构的典型案例?即然出现了这个问题,那回复的答案一定是:有的。
手机APP端使用 B/S 开发架构的典型案例就是:微信小程序。简单的介绍一下:微信 现在逐渐的转化为一个 浏览器,各种不同的 小程序 就是 图标化 的 网站地址;当我们在使用每个不同的 小程序 的时候,就等于通过 微信 · 浏览器 直接访问各个不同的 网站地址。这不就是手机APP端使用 B/S 开发架构的典型案例。
现在已经简单的介绍完了什么是 C/S 开发架构,什么是 B/S 开发架构,以及它们的各种不同的应用场景;接下来我们再一起来讨论讨论 C/S 与 B/S 之间的关系。
C/S 与 B/S 之间有什么关系?虽然 B/S 的 B 指的是 浏览器,但是这 浏览器 也是另外的一种 客户端。我们平时玩爬虫时,最常见的一句话是不是:模拟浏览器向服务器发送请求。 这里的 浏览器 也就是另外的一种 客户端。
通过前面这几句话的铺垫引生出下面这个结果:C/S 开发模式中包含于 B/S 开发模式,或者说 B/S 开发模式 是 C/S 开发模式中的一种模式。这个介绍可能有点绕,需要各位读者多读几遍,对这句话多多的细品细品。
所以,我们之后讲的所有的网络编程都是 基于 C/S 开发架构衍生发展的。
看到这,我想就会有读者朋友问了:我们之后的学习重心在 B/S 上,为什么我们现在又要学习 C/S 呢?
因为使用 B/S 架构进行开发学习的时候还需要有前端的基础,因为它是基于Web页面上的,在我们之后讲解完 前端 或者 Django 框架、Flask 框架,再回看 B/S 架构自然就 水到渠成 了。所以,我们之后所有的内容都是基于 C/S 架构 PC端进行讲解的。
计算机网络的发展及基础网络概念
前面我们说过:网络 来源于 多台计算机 的应用而来。互联网 最早的应用来自于 二战 时的 信息传递,后来发现这玩意很方便,越用越好用;随着之后战争的结束,市场经济的繁荣,商场之间的战争与博弈,互联网技术 也随之逐渐的民用化、普及化。详细的计算机发展史,在此省略 两千万字,小编我就不在这浪费大家的阅读精力了,感兴趣的朋友可以自己去百度整合学习一下,顺带着把你的学习汇总和心得能够留在评论区,方便给更多的读者朋友进行普及和学习。
两台电脑的通信
两台计算机通过 网线 链接两台计算机的 网孔 就可以以实现两台计算机 信息互联 的效果;网孔 的作用就是 网线 与计算机的 网卡 进行交互。
当然 网线 的链接这是实现了两台计算机 物理 上的连接;如果多台计算机互联,传输信息时计算机该如何 甄别 谁是谁呢?这时,我们就需要通过每台计算机专属的 MAC编号 来对计算机进行识别了。
此时,我们就来介绍一下什么是 MAC编号:每个 网卡 在完成制作后会有一个 唯一标识(全球唯一编号):MAC地址。MAC地址(编号) 非常的长且复杂,是一串 48位的二进制编码;如果使用十六进制进行表示的话是一串 12位的十六进制编码。如果,每次进行信息传输前先访问这个 超长且不容易记忆的 MAC地址 是不是神TMD的繁琐;所以,如果在同一个网络里,在访问计算机前只要输入一个 编号 就能实现传输的话,是不是就方便很多了。这个编号,我们称它为 IP地址;IP地址 就是一个编号,使用 IP地址 就能找到对应的 唯一标识 · MAC地址。这个操作,本质上是遵循 ARP协议 进行的一个联网操作。IP 和 MAC 是有在 本质上的区别 的,它们不是一类东西,在这点认知上希望各位读者朋友要明确的理解一下。
IP地址介绍及分类
前面我们已经简单又仔细的介绍了什么是 唯一标识(全球唯一编号):MAC地址,也提出了 IP 和 MAC 是有在 本质上的区别 的。接下来,我们就来详细的了解与解释一下:到底什么是 IP。
IP地址与IP协议
规定 网络地址 的 协议 叫 IP协议,它定义的 地址 称为 IP地址。现在广泛采用的V4版本的即 IPV4,它规定网络地址由 32位2进制 表示。
查看本机IP方式:打开 “网络连接” => 双击链接的网络 => 点击 “详细信息…” 就可以查看到当前计算机的 各项联网信息。
第一步: 打开 “网络连接”,双击链接的网络。
第二部: 点击 “详细信息…”
看到当前计算机的 各项联网信息。
注意:
• 一个 IPV4地址 通常写成 四段 十进制数,以 “.” 进行分隔;
• IPV4地址值 的范围 0.0.0.0 - 255.255.255.255。
Windows 和 Linux 查看网卡信息
通过 终端 调取IP信息的方法: 按 win键 + R ,在 “运行” 对话框里输入 “CMD”,点击 “确定</