Hi All,
My python script appears to not like my system argv. I have a script which reads multicast data but rather than have a built in group wanted to use command line arguements.
However when i run using the command line arguements i get thrown out with the below
ValueError: invalid literal for int() with base 10:
Script is below
Code:
#!/usr/bin/python
import socket
import struct
import sys
MCAST_GRP = int(sys.argv[1])
MCAST_PORT = int(sys.argv[2])
#MCAST_GRP = '226.1.1.1'
#MCAST_PORT = 11130
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT)) # use MCAST_GRP instead of '' to listen only
#sock.bind(('', MCAST_PORT)) # use MCAST_GRP instead of '' to listen only
# to MCAST_GRP, not all groups on MCAST_PORT
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
print sock.recv(10240)
Example or when running :
python watchMulticast.py 226.1.1.1 11130
Traceback (most recent call last):
File "watchMulticast.py", line 7, in <module>
MCAST_GRP = int(sys.argv[1])
ValueError: invalid literal for int() with base 10: '226.1.1.1'
If i use the built in variable works like a charm.
Any idea why it doesnt like my group im guessing it doesnt like the "."