I have a python script that receives the packets, but when I try and do the 
same in go I get nothing back. Can someone please take a look?

func main() {
        //udp  := "10.239.59.108:14310"
        //"224.0.31.1/24"
        //"bond0.181"
        c, err := net.ListenPacket("udp4", "10.239.59.108:14310")
        if err != nil {
                println(err)
        }
        
        en0, err := net.InterfaceByName("eno1")
        if err != nil {
                print(err)
                // error handling
        }
        p := ipv4.NewPacketConn(c)
        if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 31, 
1)}); err != nil {
                println(err)
        }
        b := make([]byte, 1500)
        for {
                n, cm, src, err := p.ReadFrom(b)
                println(n, src)
                if err != nil {
                        print(err)
                        // error handling
                }
                if cm.Dst.IsMulticast() {
                        print(100)
                }
        }
}

-----------------------------------------------
import sys
import socket
import struct


def help_and_exit(prog):
    print('Usage: ' + prog + ' from_nic_by_host_ip mcast_group_ip 
mcast_port')
    sys.exit(1)

def mc_recv(fromnicip, mcgrpip, mcport):
    bufsize = 1024

    # This creates a UDP socket
    receiver = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM, 
\
            proto=socket.IPPROTO_UDP, fileno=None)

    bindaddr = (mcgrpip, mcport)
    receiver.bind(bindaddr)

    if fromnicip == '0.0.0.0':
        mreq = struct.pack("=4sl", socket.inet_aton(mcgrpip), 
socket.INADDR_ANY)
    else:
        mreq = struct.pack("=4s4s", \
            socket.inet_aton(mcgrpip), socket.inet_aton(fromnicip))
    receiver.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

    # Receive the mssage
    for i in range(100):
        buf, senderaddr = receiver.recvfrom(1024)
        print(i, len(buf))

    # Release resources
    receiver.close()

    return msg

def main(argv):
    if len(argv) < 4:
        help_and_exit(argv[0])

    fromnicip = argv[1]
    mcgrpip = argv[2]
    mcport = int(argv[3])


    msg = mc_recv(fromnicip, mcgrpip, mcport)
    print(msg)

if __name__=='__main__':
    main(sys.argv)

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/f39f48f2-dcc9-4939-a244-d5bc03083c07n%40googlegroups.com.

Reply via email to