def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, app=None): self.app = None self.blocking = True self.stack = PyStack() if family not in (AF_INET, AF_INET6, AF_UNIX): raise error("Address family not supported by protocol " + family) else: self.family = family if type not in (SOCK_DGRAM, SOCK_STREAM): #SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET): raise error("Invalid argument " + type) else: self.type = type if app: self.app = app else: if type == SOCK_STREAM: self.app = _TCPSocket() elif type == SOCK_DGRAM: self.app = _UDPSocket() self.proto = proto if not app: if type == SOCK_STREAM: self.stack.register_tcp_application(self.app) elif type == SOCK_DGRAM: self.stack.register_udp_application(self.app) self.stack.run(doreactor=False)