• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用PYTHON接收多播數據

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    首先聲明,這不是我寫的,而是我找到的,但是別人寫的相當好。 # UDP multicast examples, Hugo Vincent, 2005-05-14. import socket def send(data, port=50000, addr='239.192.1.100'): send(data[, port[, addr]]) - multicasts a UDP datagram. # Create

    首先聲明,這不是我寫的,而是我找到的,但是別人寫的相當好。

    # UDP multicast examples, Hugo Vincent, 2005-05-14.
    import socket

    def send(data, port=50000, addr='239.192.1.100'):
            """send(data[, port[, addr]]) - multicasts a UDP datagram."""
            # Create the socket
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            # Make the socket multicast-aware, and set TTL.
            s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 20) # Change TTL (=20) to suit
            # Send the data
            s.sendto(data, (addr, port))

    def recv(port=50000, addr="239.192.1.100", buf_size=1024):
            """recv([port[, addr[,buf_size]]]) - waits for a datagram and returns the data."""

            # Create the socket
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

            # Set some options to make it multicast-friendly
            s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            try:
                    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
            except AttributeError:
                    pass # Some systems don't support SO_REUSEPORT
            s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_TTL, 20)
            s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_LOOP, 1)

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

            # Set some more multicast options
            intf = socket.gethostbyname(socket.gethostname())
            s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket..net_aton(intf) + socket.inet_aton('0.0.0.0'))
            s.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(addr) + socket.inet_aton('0.0.0.0'))

            # Receive the data, then unregister multicast receive membership, then close the port
            data, sender_addr = s.recvfrom(buf_size)
            s.setsockopt(socket.SOL_IP, socket.IP_DROP_MEMBERSHIP, socket.inet_aton(addr) + socket.inet_aton('0.0.0.0'))
            s.close()
            return data

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>