def start(self):
"""
Spin up the TCP listener
:return: None
"""
try:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
self.sock.bind((self.listen_host, self.listen_port))
self.sock.listen(1)
self.sock.settimeout(10)
except Exception as e:
log.exception(e)
self.shutdown()
return
log.debug("Started TCP Socket Listener")
while True:
try:
conn, addr = self.sock.accept()
dst = conn.getsockopt(socket.SOL_IP, 80, 16)
srv_port, srv_ip = struct.unpack("!2xH4s8x", dst)
srv_ip = socket.inet_ntoa(srv_ip)
log.debug("New connection from {}:{} => {}:{}".format(addr[0], addr[1], srv_ip, srv_port))
future = self.pool.submit(self.handle_connection, conn, addr)
self.futures[future] = conn
future.add_done_callback(self.conn_completed)
except socket.timeout:
pass
评论列表
文章目录