Python 监听系统所有端口,获取指定组播信息

接收端

import msgpack
from scapy.all import *
from multiprocessing import Process

Multicast_IP = '239.255.255.252'
Multicast_Port = '9999'

def Callback(packet):
    load = packet['Raw'].load
    # 内置的show()函数打印数据包内容
    value = msgpack.loads(load)
    # print(value)


# 子进程执行的函数
def func(name):
    sniff(filter=f"udp and host {Multicast_IP} and port  {Multicast_Port}", iface=name, count=-1, prn=Callback)


if __name__ == '__main__':
    # 网卡列表
    port_list = ["WLAN", '以太网']
    pool = ThreadPoolExecutor(max_workers=len(port_list))
    for item in port_list:
        print(f"---------开始{item}网口------------")
        pool.submit(func, item)

发送端

import socket
import time

import msgpack

Multicast_IP = "239.255.255.252"
Multicast_Port = 9999


# 发送组播数据
def sendTo(message):
    # 创建UDP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    message = msgpack.dumps(message)
    sock.sendto(message, (Multicast_IP , Multicast_Port))

sendTo({"value":"测试数据!"})

你可能感兴趣的:(Python,python,udp,端口,scapy,sniff)