视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python中UDP套接字通信的简单解析(附代码)
2020-11-27 14:21:00 责编:小采
文档


本篇文章给大家带来的内容是关于python中UDP套接字通信的简单解析(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

UDPserver.py

import socket
#导入套接字模块

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# - socket.AF_INET:IPV4
# - socket.STREAM:TCP
# - socket.DGRAM:UDP

s.bind(('',25555))
#绑定套接字有效地址和端口
#''空位任何地址 本地的127.0.0.1 和局域网还有自己真实的ip
print('[+] Server Open.....')

while True:
 try:
 data,c_addr = s.recvfrom(1024)
 #一次性接受1024bytes的数据 ,返回一个元组,其中有数据和地址
 #UDP不需要构成连接,直接发送即可
 print('from:',c_addr)
 #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
 print('say:%s'%(data.decode('utf-8')))
 msg = data.decode('utf-8')
 s.sendto(msg.encode('utf-8'),c_addr)
 #发送信息,其中有两个参数,一个是信息,一个是目标地址和端口
 except KeyboardInterrupt:
 break

print('[+] Server Close......')
s.close

UDPclient.py

import socket
#导入套接字模块

c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# - socket.AF_INET:IPV4
# - socket.STREAM:TCP
# - socket.DGRAM:UDP

while True:
 try:
 msg = input('>>>')
 if msg == 0:
 #判断输入是否为空 就是直接回车了
 continue
 #UDP不需要构成连接,直接发送即可
 c.sendto(msg.encode('utf-8'),('127.0.0.1',25555))
 #发送消息,其中两个参数,第一个是要发送的信息
 #第二个是发送的ip地址和端口,是一个元组

 data,s_addr = c.recvfrom(1024)

 #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
 print('$: %s'%(data.decode('utf-8')))
 except KeyboardInterrupt:
 break

c.close()

UDP套接字模型

UDP不需要构成连接,直接发送即可

服务端模型:

data,c_addr = s.recvfrom(1024)

s.sendto(msg, c_addr)

别人发来的消息 就直接发到s服务端套接字了

data:发来的数据

c_addr:谁发的

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind(('',25555))

send recv

sendto recvfrom

都是阻塞的

下载本文
显示全文
专题