首页 > 编程语言 > 详细

Python 第三十一章 UDP协议的socket

时间:2019-08-16 23:29:49      阅读:101      评论:0      收藏:0      [点我收藏+]

UDP协议

服务端

"""
笔记
"""
"""
UDP与TCP的区别
1.基于udp协议的socket:无须建立管道,先开服务端或者客户端都可以
2.基于udp协议的socket:接收一个消息,发送一个消息都是无连接的,任意一个客户端都可以与服务端沟通(有先后顺序)
3.只要拿到ip地址和端口就可以给服务端发消息,服务端按照顺序接收消息

"""
# 导入socket模块
import socket
# 创建一个server对象
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 基于网络的UDP协议的socket 面向数据报 (第一个聊完了才能与第二个聊)

# 连接本地ip
server.bind(('127.0.0.1',9000))
# while循环发送消息
while 1:
    # 阻塞,等待客户端来消息
    from_client_data = server.recvfrom(1024) # 谁连我,谁就能发消息
    # 1024 最大字节1024

    # 输出客户端的消息
    print(from_client_data)
    # from_client_data得到的第一个是客户端的消息(转成字节型)第二个是客户端的ip地址和端口
    # b'x88\xe6\x81\xaf', ('127.0.0.1', 56104))

    # 输出客户端的消息
    print(f'来自客户端{from_client_data[1]}:{from_client_data[0].decode("utf-8")}')
    # from_client_data[1] 客户端的ip地址
    # {from_client_data[0] 客户端的字节型的消息 decode("utf-8") 解析成utf-8格式

    # 给客户端发送消息
    to_client_data = input('>>>给客户端发消息')
    # 服务端把消息发送给客户端用sendto方法
    server.sendto(to_client_data.encode('utf-8'),from_client_data[1])
    # o_client_data.encode('utf-8') 转成字节型
    # from_client_data[1] 客户端的ip地址

客户端

# 导入socket模块
import socket
# 创建一个client对象
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 基于网络的UDP协议的socket 面向数据报 (可以开启多个客户端与服务端连接)

# while循环发送消息
while 1:
   # 给服务端发送消息
   to_server_data = input('>>>服务端发消息')
   # 客户端把消息发送给服务端发送消息用sendto方法
   client.sendto(to_server_data.encode('utf-8'),('127.0.0.1',9000)) # 服务器地址直接写后面
   # to_server_data.encode('utf-8') 消息转成字节类型
   # ('127.0.0.1',9000) 发送到服务端,直接跟服务端的地址和端口号

   # 接收的消息
   data,addr = client.recvfrom(1024)
   print(data,addr)
   # data 服务端的消息字节型
   # addr 服务端的ip地址
   # 1024 最大字节1024

   # 输出接收到的服务端的消息
   print(f'来自服务端{addr}的消息:{data.decode("utf-8")}')
   # data.decode("utf-8") 将数据转成utf-8格式

Python 第三十一章 UDP协议的socket

原文:https://www.cnblogs.com/zhangshan33/p/11366255.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!