UDP重要知识点(代码与思路)
基础知识
ip地址
- 作用:找到网络上的唯一一台设备。
- IP 地址是指互联网协议地址, 是 IP Address 的缩写. IP 地址是 IP 协议提供的一种统一的地址格式.
- 格式:4段,每一段的0-255之间,但255这个给⼴广播留留的地址255.255.255.25
- 查看ip地址:ifconfig(linux),ipconfig(windows)
查看网络连通性:
- ping 127.0.0.1 检查本机操作系统网络功能工作是否正常.
- ping 本机网卡IP地址 检查网卡是否正常工作.
- ping 远程主机IP/域名 检查与远程主机的连通性.
- 不通的情况有两种,一种地址写错了,一种防火墙。
- 内网的地址:这个是我们的路由器分配的地址,让我们局域网的用户可以互相通讯,
- 外网的地址:电信这块给你⼀一个设备,这个设备可以得到外网的地址。
端口
- 作用:用来确定唯一 一台设备上的网络通讯的软件或网络程序必须要有端口号。
- 分类:知名端口0—1023; 动态端口1024—65535。
网络传输方式-UDP特点:
- 无连接,资源开销小,速度快
- 数据不可靠,容易丢数据包
socket:套接字,是进程间通信的一个工具。
socket介绍:
- socket(简称 套接字) 是进程间通信一个工具,它能实现把数据从一方传输到另外一方,完成不同电脑上进程之间的通信, 它好比数据的搬运工。
import socket
socket.socket(AddressFamily, Type)
函数 socket.socket 创建一个 socket,该函数带有两个参数:
Address Family:IP地址类型; AF_INET表示ipv4类型、AF_INET6表示ipv6类型; Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)
UDP 网络程序流程如下:
流程步骤:
- 创建UDP套接字
- 发送/接收 数据
- 关闭套接字
端口(未绑定)问题:
- 每重新运行一次网络程序,上图中红圈中的数字,不一样的原因在于,这个数字标识这个网络程序,当重新运行时,如果没有确定到底用哪个,系统默认会随机分配。
- 如果套装服务器端程序的话,是一定要绑定端口号的。
套接字可以同时收发代码,如下:(udp收到的数据是一个元组,两个元素)
udp发送数据
思路:
1. 初始化socket
2. 发送数据
3. 关闭
import socket
def main():
"""使用udp发送数据"""
# 1.初始化socket
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2.发送数据
# 1第一个参数:就是我们发送的数据,注意编码
# 2.发送的地址与端口
udp.sendto("我要吃了".encode("utf-8"), ("172.16.251.164", 8282))
# 程序员为了统一方便调试使用127.0.0.1本机ip地址
# 3.关闭
udp.close()
if __name__ == '__main__':
main()
udp接收数据
# 思路:
# 1.初始化socket
# 2. 绑定端口
# 3. 接收数据
# 4. 关闭
import socket
def main():
"""绑定 端口"""
# 1.初始化socket
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM