PHP 7.4.33
Preview: mcast.py Size: 2.16 KB
//lib64/python2.7/Demo/sockets/mcast.py

#! /usr/bin/python2.7
#
# Send/receive UDP multicast packets.
# Requires that your OS kernel supports IP multicast.
#
# Usage:
#   mcast -s (sender, IPv4)
#   mcast -s -6 (sender, IPv6)
#   mcast    (receivers, IPv4)
#   mcast  -6  (receivers, IPv6)

MYPORT = 8123
MYGROUP_4 = '225.0.0.250'
MYGROUP_6 = 'ff15:7079:7468:6f6e:6465:6d6f:6d63:6173'
MYTTL = 1 # Increase to reach other networks

import time
import struct
import socket
import sys

def main():
    group = MYGROUP_6 if "-6" in sys.argv[1:] else MYGROUP_4

    if "-s" in sys.argv[1:]:
        sender(group)
    else:
        receiver(group)


def sender(group):
    addrinfo = socket.getaddrinfo(group, None)[0]

    s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)

    # Set Time-to-live (optional)
    ttl_bin = struct.pack('@i', MYTTL)
    if addrinfo[0] == socket.AF_INET: # IPv4
        s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl_bin)
    else:
        s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_HOPS, ttl_bin)

    while True:
        data = repr(time.time())
        s.sendto(data + '\0', (addrinfo[4][0], MYPORT))
        time.sleep(1)


def receiver(group):
    # Look up multicast group address in name server and find out IP version
    addrinfo = socket.getaddrinfo(group, None)[0]

    # Create a socket
    s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)

    # Allow multiple copies of this program on one machine
    # (not strictly needed)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    # Bind it to the port
    s.bind(('', MYPORT))

    group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0])
    # Join group
    if addrinfo[0] == socket.AF_INET: # IPv4
        mreq = group_bin + struct.pack('=I', socket.INADDR_ANY)
        s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
    else:
        mreq = group_bin + struct.pack('@I', 0)
        s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)

    # Loop, printing any data we receive
    while True:
        data, sender = s.recvfrom(1500)
        while data[-1:] == '\0': data = data[:-1] # Strip trailing \0's
        print (str(sender) + '  ' + repr(data))


if __name__ == '__main__':
    main()

Directory Contents

Dirs: 0 × Files: 46

Name Size Perms Modified Actions
283 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
547 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
547 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
738 B lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
827 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
827 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.23 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
1.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.84 KB lrw-r--r-- 2020-04-19 21:13:39
Edit Download
2.88 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.88 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
9.55 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
10.08 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
10.08 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.16 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
2.12 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.12 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
287 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
471 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
471 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
628 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
713 B lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
982 B lrw-r--r-- 2024-04-10 04:58:47
Edit Download
982 B lrw-r--r-- 2024-04-10 04:58:47
Edit Download
1.18 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
1.30 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
1.30 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.94 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
2.10 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.10 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.04 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
2.42 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
2.42 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
1.43 KB lrwxr-xr-x 2024-04-10 04:57:37
Edit Download
1.98 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
1.98 KB lrw-r--r-- 2024-04-10 04:58:47
Edit Download
230 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
456 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
456 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
232 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
424 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
424 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
414 B lrw-r--r-- 2020-04-19 21:13:39
Edit Download
593 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
593 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).