加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

UDP通信

发布时间:2020-12-20 10:55:55 所属栏目:Python 来源:网络整理
导读:UDP协议通信 一、特点 数据报协议(自带报头) 没有双向通道,通信类似于发短信,而TCP协议类似于打电话 二、简易版 # 服务端import socketserver = socket.socket(type=socket.SOCK_DGRAM) # UDP协议server.bind(('127.0.0.1',8080))# UDP不需要设置半连接

UDP协议通信

一、特点

  • 数据报协议(自带报头)
  • 没有双向通道,通信类似于发短信,而TCP协议类似于打电话

二、简易版

# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)  # UDP协议
server.bind(('127.0.0.1',8080))
# UDP不需要设置半连接池 它也没有半连接池的概念

# 因为没有双向通道  不需要accept  直接就是通信循环
while True:
    data,addr = server.recvfrom(1024)
    print('数据:',data)  # 客户端发来的消息
    print('地址:',addr)  # 客户端的地址
    server.sendto(data.upper(),addr)


# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
# 不需要建立连接  直接进入通信循环
server_address = ('127.0.0.1',8080)
while True:
    client.sendto(b'hello',server_address)
    data,addr = client.recvfrom(1024)
    print('服务端发来的数据',data)
    print('服务端的地址',addr)

三、UDP与TCP之间的区别

  • UDP协议客户端允许发空
  • UDP协议不会粘包
  • UDP协议服务端不存在的情况下,客户端照样不会报错
  • UDP协议支持并发

四、UDP实现简易版本QQ

# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))
while True:
    data,addr = server.recvfrom(1024)
    print(data.decode('utf-8'))
    msg = input('>>>:')
    server.sendto(msg.encode('utf-8'),addr)
    
# 客户端1
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    msg = input('>>>:')
    msg = '来自客户端1的消息:%s'%msg
    client.sendto(msg.encode('utf-8'),server_addr = client.recvfrom(1024)
    print(data.decode('utf-8'))

# 客户端2
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    msg = input('>>>:')
    msg = '来自客户端2的消息:%s'%msg
    client.sendto(msg.encode('utf-8'),server_addr = client.recvfrom(1024)
    print(data.decode('utf-8'))

# 客户端3
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    msg = input('>>>:')
    msg = '来自客户端3的消息:%s'%msg
    client.sendto(msg.encode('utf-8'),server_addr = client.recvfrom(1024)
    print(data.decode('utf-8'))
    
# 客户端4
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    msg = input('>>>:')
    msg = '来自客户端4的消息:%s'%msg
    client.sendto(msg.encode('utf-8'),server_addr = client.recvfrom(1024)
    print(data.decode('utf-8'))
    
# 客户端5
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    msg = input('>>>:')
    msg = '来自客户端5的消息:%s'%msg
    client.sendto(msg.encode('utf-8'),server_addr = client.recvfrom(1024)
    print(data.decode('utf-8'))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读