前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3-UDP详解

python3-UDP详解

作者头像
py3study
发布2020-01-13 11:09:50
6760
发布2020-01-13 11:09:50
举报
文章被收录于专栏:python3python3

UDP 详解

代码语言:javascript
复制
用户数据报协议(user Datagram protocol)
这个通信协议发送不管对方是否接收到,可以用通过对方接到回复一个标识来记录是否成功通信
适用于广播的应用程序(象发邮件模式)
udp
udp

python UDP (发送接收端)

代码语言:javascript
复制
"""udp服务器"""
import socket


def main():
    # 创建一个服务器
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.sendto('xxx'.encode('utf-8'),('127.0.0.1',8090))
    udp_socket_recv = udp_socket.recvfrom(1024)    # 1024 代表字节数
    print(udp_socket_recv)      # (b'1', ('192.168.27.119', 8090))

    print(udp_socket_recv[0].decode('utf-8'))
    print(udp_socket_recv[1])

    udp_socket.close()


if __name__ == '__main__':
    main()

python UDP 绑定固定端口号

代码语言:javascript
复制
"""udp服务器"""
import socket


def main():
    # 创建一个服务器
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind(('',8888))  # 绑定固定端口

    udp_socket.sendto('xxx'.encode('utf-8'),('127.0.0.1',8090))  
    udp_socket_recv = udp_socket.recvfrom(1024)    # (b'1', ('192.168.27.119', 8090))
    print(udp_socket_recv)

    print(udp_socket_recv[0].decode('utf-8'))
    print(udp_socket_recv[1])

    udp_socket.close()


if __name__ == '__main__':
    main()

python UDP 简易聊天器

代码语言:javascript
复制
"""聊天小程序--单任务版(只能发一次回一次)"""
import socket


def set_receive_info(rece_info):
    rece_ip = input("请输入待接收方的ip:")
    rece_port = input("请输入待接收的端口号:")
    rece_info = (rece_ip, int(rece_port))
    print("接收方主机%s记录成功" % str(rece_info))
    return rece_info


def send_message(udp_socket, rece_info):
    send_data = input("输入发送的数据:")

    udp_socket.sendto(send_data.encode(), rece_info)
    print('发送成功.....')


def receive_message(udp_socket):
    rec_data = udp_socket.recvfrom(1024)
    print('接收到数据,正在解析....', rec_data)
    print("收到消息:%s" % rec_data[0].decode('gbk'))


def main():
    # 创建一个套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 为这个套接字绑定一个ip和端口号
    udp_socket.bind(("192.168.206.1", 9999))
    rece_info = ''  # 待接收方的主机信息
    while True:
        print("1.发送消息,2.接收消息,3.重置收信人,4.退出")
        num = input("请输入:")
        if num == "1":
            if rece_info == '':
                rece_info = set_receive_info(rece_info)

            send_message(udp_socket, rece_info)
        elif num == '2':
            receive_message(udp_socket)
        elif num == '4':
            break
        elif num == '3':
            rece_info = set_receive_info(rece_info)
        else:
            print('输入无效')

    # 关闭一个套接字
    udp_socket.close()


if __name__ == '__main__':
    main()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UDP 详解
    • python UDP (发送接收端)
      • python UDP 绑定固定端口号
        • python UDP 简易聊天器
        相关产品与服务
        云开发 CloudBase
        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档