计算机网络-基于python的UDP套接字编程

运行环境: Pycharm 2021.3.1/python 3.9
UDPClient.py from socket import * # UDP客户端 2022/02/25 # 定义服务器IP及端口号 serverIP = 127.0.0.1 serverPort = 997 # 创建客户套接字 clientSocket = socket(AF_INET, SOCK_DGRAM) # 输入message message = input(Please input your message:) # 发送 clientSocket.sendto(message.encode(), (serverIP, serverPort)) # 接收 modifiedMessage, serverAddress = clientSocket.recvfrom(2048) # 输出 print(modifiedMessage.decode()) # 关闭socket clientSocket.close()
UDPServer.py from socket import * # UDP服务端 2022/02/25 # 定义服务器端套接字端口 serverPort = 997 # 创建服务器端套接字 serverSocket = socket(AF_INET, SOCK_DGRAM) # 将端口与套接字进行绑定 serverSocket.bind((, serverPort)) print(The server is ready to receive!) # 循环 while True: # 接收客户端信息 message, clientAddress = serverSocket.recvfrom(2048) print(-------Received message: + message.decode() + -------) # 处理 modifiedMessage = message.decode().upper() # 返回 serverSocket.sendto(modifiedMessage.encode(), clientAddress) print(modifiedMessage + + ------- I MADE IT ! -------)
运行结果:
Tips1: python3中对文本与二进制数据做了更加清晰的区分。文本总是用unicode进行编码,以str类型表示;而二进制数据以bytes类型表示。 str.encode() = bytes bytes.decode() = str
Tips2: 使用sendto()与recvfrom()进行数据传输时使用bytes类型,在控制台输入输出使用str类型,所以要进行encode/decode的转换。
参考:
经验分享 程序员 微信小程序 职场和发展