UDP语法
1 创建一个socket的UDP对象
import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议 sk = socket.socket(type=socket.SOCK_DGRAM) print (sk)
执行
[root@node10 tcp]# python3 server.py <socket.socket fd=3,
family=AddressFamily.AF_INET,
type=SocketKind.SOCK_DGRAM,
proto=0,
laddr=('0.0.0.0', 0)>
2 创建UAP连接
服务端
import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议 sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机 sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据 msg,cli_addr = sk.recvfrom(1024) print (msg.decode("utf-8")) #关闭udp连接 sk.close()
客户端
import socket sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号)) sendto ("Nice to meet you!".encode("utf-8"),("127.0.0.1",9000) ) #关闭连接 sk.close()
先执行服务端
[root@node10 tcp]# python3 server.py
被阻塞,查看端口信息
再执行客户端
服务端收到消息
[root@node10 tcp]# python3 server.py Nice to meet you!
3 循环发消息
服务端
#服务端 import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议 sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机 sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据 while True: msg,cli_addr = sk.recvfrom(1024) print (msg.decode("utf-8")) print (cli_addr) #关闭udp连接 sk.close()
客户端
import socket sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号)) while True: message = input("Please input the value:") sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) ) #关闭连接 sk.close()
执行
[root@node10 tcp]# python3 server.py Hello #服务端接收的消息 ('127.0.0.1', 34236) #打印出客户端的地址端口 Nice to meet you! ('127.0.0.1', 34236) [root@node10 tcp]# python3 client.py #客户端发送消息 Please input the value:Hello Please input the value:Nice to meet you!
4 服务端同时发送消息给客户端
服务端
#服务端 import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议 sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机 sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据 while True: msg,cli_addr = sk.recvfrom(1024) print (msg.decode("utf-8")) print (cli_addr) #发送消息 message = input("Please input your vaule>>>:") sk.sendto(message.encode("utf-8"),cli_addr) #关闭udp连接 sk.close()
客户端
import socket sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号)) while True: message = input("Please input the value:") sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) ) #接收数据 msg,ser_addr = sk.recvfrom(1024) print (msg.decode("utf-8")) #关闭连接 sk.close()
执行
[root@node10 tcp]# python3 server.py Hi #服务端接收数据 ('127.0.0.1', 41800) Please input your vaule>>>:Hi #服务端发送的数据 Nice to meet you! ('127.0.0.1', 41800) Please input your vaule>>>:Nice to meet you too! [root@node10 tcp]# python3 client.py Please input the value:Hi #客户端发送数据 Hi #客户端接收到的数据 Please input the value:Nice to meet you! Nice to meet you too! Please input the value: