udp套接字

105 阅读1分钟

服务端

from socket import *

# IPV4
# 创建套接字
sockfd = socket(AF_INET, SOCK_DGRAM)

# UDP无需绑定
# sockfd.connect("192.168.199.201")

# 循环收发消息

while True:
    data=input("发送:")
    sockfd.sendto(data.encode(),("192.168.199.201",18888))
    msg,addr=sockfd.recvfrom(1024)
    print("收到",msg)

客户端

from socket import *

# IPV4
# 创建套接字
sockfd = socket(AF_INET, SOCK_DGRAM)

# 绑定地址
server_addr=("0.0.0.0", 18888)
sockfd.bind(server_addr)

# 循环收发消息
# UDP没有三次握手,四次挥手,因为无连接
while True:
    data,addr=sockfd.recvfrom(1024)
    print("收到",data.decode())
    sockfd.sendto(b"thanks",addr)

UDP有消息边界,不会产生粘包的情况。recvfrom(1024)多少字节就是最大接受多少字节,如果发送的字节超过最大接受数,则会产生数据的丢失。