Exemplo n.º 1
0
	def __init__(self, ip=None, port=None, seeders=None, trackerAddr=None, ttl=1):
		if not (ip or port or seeders or trackerAddr) :
			print "Group required IP and port and seeders list"
			exit()

		self.trackerAddr = trackerAddr
		self.seeders = seeders
		# create a UDP socket
		print "Creating UDP group socket..."
		s1 = Socket(ip,port).UDP()
		
		# Set Time-to-live (optional)
		ttl_str = struct.pack('@i', ttl)

		# include ttl into IP header
		s1.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl_str)
		
		# for udp
		# assign variable to group self
		self.gSocket = s1
		self.ip = ip
		self.port= port
		self.ttl = ttl
		self.gSocket.bind((ip, port))

		## for tcp
		port2 = 8982
		print "Creating TCP socket for seeder connection..."
		s2 = Socket(ip,port2).TCP()
		self.sSocket = s2
		self.port2 = port2
		self.sSocket.bind((ip, port2))
		print "Connecting to seeder ", seeders
		self.sSocket.connect(seeders)
		self.receivefromseeder()
Exemplo n.º 2
0
	def JoinGroup(self, groupIP, groupPort):
		'''
		Create a UDP socket
		Join the group
		'''

		s = Socket(self.ip, self.port).UDP()

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


		# Bind it to the port
		s.bind((groupIP, groupPort))

		# get the group to join
		group_bin = socket.inet_pton(socket.AF_INET, groupIP)

		# Join group
		mreq = group_bin + struct.pack('=I', socket.INADDR_ANY)
		s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
	
		return s