当前位置: 首页 > article >正文

python 组播udp诊断

测试代码

import socket
import struct

MULTICAST_IP = "239.1.1.5"  # 替换为你的多播IP
MULTICAST_PORT = 9200             # 替换为你的多播端口
LOCAL_IP = "172.20.10.3"        # 替换为你的本地IP

def diagnose_multicast():
    try:
        # 检查本地IP是否有效
        try:
            local_ip_valid = False
            with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as test_sock:
                test_sock.bind((LOCAL_IP, 0))
                local_ip_valid = True
            if local_ip_valid:
                print(f"本地IP有效: {LOCAL_IP}")
        except OSError:
            print(f"错误:未找到有效的本地IP {LOCAL_IP}")
            return

        # 创建Socket
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

        # 绑定到本地地址
        try:
            sock.bind((LOCAL_IP, MULTICAST_PORT))
            print(f"成功绑定到本地地址: {LOCAL_IP}:{MULTICAST_PORT}")
        except OSError as e:
            print(f"绑定失败: {e}")
            return

        # 设置 IP_TOS
        try:
            sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, 4)
            print("IP_TOS 设置成功")
        except OSError as e:
            print(f"IP_TOS 设置失败: {e}")

        # 加入多播组
        try:
            mreq = struct.pack("=4sl", socket.inet_aton(MULTICAST_IP), socket.inet_aton(LOCAL_IP))
            sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
            print(f"成功加入多播组: {MULTICAST_IP}")
        except OSError as e:
            print(f"加入多播组失败: {e}")

    except Exception as e:
        print(f"诊断失败: {e}")

if __name__ == "__main__":
    diagnose_multicast()


http://www.kler.cn/a/516700.html

相关文章:

  • 我的求职之路合集
  • C#AWS signatureV4对接Amazon接口
  • C语言 指针_野指针 指针运算
  • 【Unity3D】3D物体摆放、场景优化案例Demo
  • 消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)
  • 微信小程序压缩图片
  • 解锁C#编程新姿势:Z.ExtensionMethods入门秘籍
  • MySQL用户授权、收回权限与查看权限
  • AI知识库如何提升电子电器企业的运营效率
  • MVCC在MySQL中实现无锁的原理
  • C语言基础------练习
  • WordPress标签导入插件
  • 时间类型数据处理:基于Python的datetime库和pandas库
  • JVM之Java编译到执行(1)--引
  • 教育培训微信小程序ssm+论文源码调试讲解
  • CBAM-2018学习笔记
  • 如何使 LLaMA-Factory 支持 google/gemma-2-2b-jpn-it 的微调
  • 网络(二)协议
  • GIT的常规使用
  • 【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作
  • docker 启动镜像命令集合
  • Java 大视界 -- Java 大数据中的异常检测技术与应用(61)
  • ESP8266 OTA固件启动日志里分区解析【2M flash】
  • 【Java实现 通过Easy Excel完成对excel文本数据的读写】
  • 递归的本质
  • Rman还原