知识点

发送数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import socket

# 生成一个套接字对象
udp_socket = socket.socket(soket.AF_INET, socket.SOCK_DGRAM)

# 发送过程中可以绑定端口,不绑定的化则由操作系统随机提供
# 第一个''中填写IP,必须是自己的IP, 第二个参数填写的是端口号
udp_socket.bind('', 8080)

# 利用sendto方法向目标机器发送消息,它传递的第一个参数必须是bytes类型,第二个参数为目标机器的IP、端口元组
target_addr = ("192.168.43.108", 8080)
udp_socket.sendto(b'hahaha', target_addr) # 也可以使用encode进行编码发送内容,如下
# udp_socket.sendto('发送的内容'.encode('utf-8'), target_addr)

udp_scoket.close()

知识点

  1. 字符串.encode(编码格式):可以对字符串进行编码,utf-8是常用的

    字符串.decode(解码格式):可以对字符串进行解码,有时遇到\x09之类的报错,可以用gbk方式对其解码

接受数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 接受数据需要绑定端口
recv_addr = ('', 8080)
udp_socket.bind(recv_addr)

# 等待接受别人发送的数据,2048表示本机允许接受的最大数据量为2048个字节。其返回值为别人发送消息的元组
message = udp_socket.recvfrom(2048)

# 打印出发送的消息,decode表示将发送的消息解码为gbk,这样可以打印出中文信息
print(message[0].decode('gbk'))

udp_socket.close()

作业

  1. 编写UDP客户端
  2. 编写UDP接收端