1. 建立一个UDP服务端
#================================================================
#udpserver.py
import socket #python内部模块,直接导入
#socket(family[,type[,proto]]]) 创建一个scoket对象#family定义IP协议,分为IPv4,IPv6.
#socket.AF_INET IPv4
#socket.AF_INET6 IPv6
#type SOCK_DGRAM UDP SOCK_STREAM TCPs = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建一个IPv4,UDP链接对象
#bind(('IP',端口),),如果IP是空字符,那么表示本机任何可用IP,端口自定义,但不要和其他在用或应用程序默认端口重复
s.bind(('127.0.0.1',5000)) #127.0.0.1表示本机IP,定义服务端接收信息的端口是5000
while True:
#recvfrom接收一个参数,该参数是定义了每次收到的最大字节数;
#recvfrom返回两个元素,第一个元素收到的信息(字符串),第二个元素含有两个字符串(或元素)的元组,分别是发送者的IP,发送者的端口号
print('received message:{0}'.format(data.decode())) #收到的消息需要decode解码
print('The message is from PORT{0},IP{1}.'.format(addr[1],addr[0]))
if data.decode().lower()=='quit':
break
s.close()
#=================================================================
2.UDP client客户端
#=================================================================
#UDPclient.py
import socket
def UdpClient():
Host = '127.0.0.1'
Port = 5000
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#input用户自定义消息
str1 = input('Input some messages:\n')
#sendto(string,(IP,PORT)) string是要发送的信息,IP是目标(server)的IP,PORT目标端口,上面我定义的是5000
s.sendto(str1.encode(),(Host,Port)) #str1.encode()编码后发送,接收端需要decode
s.close()
return str1
while True:
str1 = UdpClient()
if str1 =='quit':
break
#==========================================================
3.运行udpserver.py,再运行UDPclient.py