欢迎来到战五渣的博客

人生三重境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

037.Python的UDP语法

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:

 

posted @ 2020-02-23 12:19  梦中泪  阅读(232)  评论(0编辑  收藏  举报