最近在看计算机网络自顶向下方法,里面有UDP套接字编程,是用python写的,但是上面的python版本好像有点旧,我电脑上用的python3.7,上面的代码有些是有问题的,网上搜了一下,这里记录一下:
UDPClient.py文件所对应的代码
from socket import * # 导入socket包
serverName='127.0.0.1' # 要发送的目的主机IP地址
serverPort=12000 # 目的主机接受信息的端口号
clientSocket=socket(AF_INET,SOCK_DGRAM) # 建立客户端套接字
message=input('Input a sentence') # 输入函数,提示输入一段话
# 客户端将信息发送到服务端,注意发送的时候数据类型是bytes
clientSocket.sendto(message.encode('utf-8'),(serverName,serverPort))
# 发送数据后,客户端接受从服务端返回的信息
modifiedMessage,serverAddress=clientSocket.recvfrom(2048)
# 由于接收到的数据是bytes类型,需要将其解码为字符串类型
print(modifiedMessage.decode('utf-8'))
# 关闭连接
clientSocket.close()
UDPServer.py对应的代码
from socket import *
serverPort=12000
serverSocket=socket(AF_INET,SOCK_DGRAM) # 建立服务端套接字
serverSocket.bind(('',serverPort)) # 将端口号与服务端套接字绑定
print("The server is ready to receive")
while True:
message,clientAddress=serverSocket.recvfrom(2048)
print(message.dencode('utf-8'))
modifiedMessage=message.upper() # 将字符串全部变成大写
serverSocket.sendto(modifiedMessage.encode('utf-8'),clientAddress)