1.
random模块
导入
import random
随机整数
包括最大值,不可加步长
random.randint(最小值,最大值)
不包括最大值,但可以给步长
random.randrange(最小值,最大值,步长)
随机选择一个返回
random.choice(列表)
随机取多个返回
随机取多个,返回结果是列表
random.sample(列表,取几个)
打乱顺序
用于洗牌,会改变列表自身数据
random.shuffle(列表)
2.IP地址
windows
cmd 命令提示符下
ipconfig
linux
在终端
ifconfig
IP地址的分类
-
ipv4
-
ipv6
分类寻址
IPV4被分为五大类:ABCDE
A类为:点分四组中的第一组地址范围为0~127的IP地址。已二进制来看就是“首位为0”
B类:128~191.二进制首位为10
C类:192~223.二进制首位为110
D类:224~239.二进制首位为1110
E类:240~255.二进制首位为1111
二进制
数据逢二进一
十进制 | 二进制 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
进制转换
十进制转换为二,八,十六进制的方法
num = 15 # 进制的转换 m = bin(num) # 十制制转二进制 print(m) ba = oct(num) # 十进制转八进制 print(ba) sl = hex(num) # 十进制转十六进制 print(sl)
结果
0b1111 0o17 0xf
udp通信
udp收发消息
-
创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-
发消息
udp_socket.sendto(bytes类型数据,(IP地址字符串,端口整数型))
-
收消息
udp_socket.recvfrom(字节数)
返回值,元组
(bytes数据,(str发件方的ip,int发件方的端口))
-
关闭套接字
udp_socket.close()
数据类型的转换
str转bytes
变量 = str对象.encode(编码格式)
byte转str
变量 = bytes对象.decode(编码格式)
示例
a = "好" print(a, type(a),"a") b = a.encode("utf8") print(b, type(b),"b") c = b.decode("utf8") print(c, type(c),"c")
效果
C:\Users\python_hui\Anaconda3\python.exe G:/untitled2/28/03udp/3.py 好 <class 'str'> a b'\xe5\xa5\xbd' <class 'bytes'> b 好 <class 'str'> c Process finished with exit code 0
三次握手
四次挥手
互联网五层协议
原图:
套接字工作流程