def handle_accept(self):
pair = self.accept()
if pair is None:
pass
else:
client_sock, addr = pair
domain, srv_host, srv_port = self.dst
if srv_port == 0:
dst=client_sock.getsockopt(socket.SOL_IP, 80, 16)
srv_port, srv_ip = struct.unpack("!2xH4s8x", dst)
srv_host = socket.inet_ntoa(srv_ip)
client_sock = self.prepare_sock(client_sock, srv_host)
print 'Incoming connection from %s' % repr(addr)
print 'Outgoing connection to %s:%d' %(srv_host, srv_port)
server_sock = create_bound_socket(self.proto,self.bindaddr,True)
server_sock=self.prepare_sock(server_sock)
self.prepare_sock(server_sock)
try:
server_sock.connect((srv_host, srv_port))
except Exception,e:
print "Connection failed"
client_sock.close()
server_sock.close()
return
self.client=self.NetworkEndpoint(client_sock, config=self.config)
self.server=self.NetworkEndpoint(server_sock, config=self.config)
self.server.meet(self.client)
self.handle_connection()
评论列表
文章目录