文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python3-UDP详解

2023-01-31 01:33

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

udp

python UDP (发送接收端)

"""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 绑定固定端口号

"""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 简易聊天器

"""聊天小程序--单任务版(只能发一次回一次)"""
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()
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯