Skip to content
Snippets Groups Projects
Commit f898c705 authored by jkerdreu's avatar jkerdreu
Browse files

Added bind & send_raw

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/trunk@1976 b32b6428-25c9-4566-ad07-03861ab6144f
parent 9a12bc83
No related branches found
No related tags found
No related merge requests found
......@@ -42,10 +42,11 @@ class NetworkState(Enum):
class NetworkConnector(object):
UDP_MAX_SIZE = 65507
def __init__(self, addr, port, hops):
def __init__(self, addr, port, hops,bind_addr='0.0.0.0'):
self.addr = addr
self.port = port
self.hops = hops
self.bind_addr = bind_addr
self.state = NetworkState.disconnected
def connect(self):
......@@ -56,14 +57,12 @@ class NetworkConnector(object):
def __connect(self):
logger.info("Connecting to %s:%s" % (self.addr, self.port))
# TBD add bind_addr attrib
bind_addr = ''
self.__sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP)
# self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
# #formac os ???
self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.__sock.bind((bind_addr, self.port))
self.__sock.bind((self.bind_addr, self.port))
mreq = struct.pack('4sl',socket.inet_aton(self.addr),socket.INADDR_ANY)
self.__sock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,mreq)
self.__sock.setsockopt(socket.IPPROTO_IP,socket.IP_MULTICAST_TTL,self.hops)
......@@ -95,9 +94,12 @@ class NetworkConnector(object):
self.network_error(e)
def send(self, message):
self.send_raw(codecs.encode(message))
def send_raw(self,data):
if not self.is_connected(): self.connect()
try:
self.__sock.sendto(codecs.encode(message), (self.addr, self.port))
self.__sock.sendto(data, (self.addr, self.port))
except Exception as e:
self.network_error(e)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment