示例#1
0
    def createAcceptor(self):
        acceptor = Acceptor(self.port + 1, self.ips, self.ip, self.num)
        if not self.logging_switch:
            acceptor.logging(False)
        acceptor.log('starting')

        acceptor.listen()

        acceptor.log('exiting')
示例#2
0
class Server(object):
    def __init__(self, addr, coder=None):
        self.loop = Loop()
        self.acceptor = Acceptor(addr, self.loop)
        self.coder = coder
        self.clients = {}
        self.acceptor.set_error_callback(self.fatal_error)
        self.acceptor.set_connect_callback(self.process_new)

    def start(self):
        self.acceptor.listen()
        self.loop.loop()

    def fatal_error(self, msg):
        print msg
        self.quit()

    def quit(self):
        for fd in self.clients.keys():
            ch = self.clients.pop(fd)
            ch.close()
        self.loop.quit()

    def process_new(self, sock):
        ch = Channel(Socket(sock), self.loop, self.coder)
        ch.set_read_callback(self.on_msg_in)
        ch.set_write_callback(self.on_msg_sent)
        ch.set_error_callback(self.on_error)
        ch.set_peer_closed(self.peer_closed)
        self.clients[ch.fd] = ch
        self.on_connect(ch)

    def on_connect(self, ch=None):
        print 'client {} connect.'.format(ch.peer_addr)
        pass

    def on_msg_in(self, msg, ch=None):
        pass

    def on_msg_sent(self, ch=None):
        pass

    def on_error(self, ch=None):
        print 'error'
        self.clients.pop(ch.fd)

    def peer_closed(self, ch=None):
        print 'client {} disconnect.'.format(ch.peer_addr)
        self.clients.pop(ch.fd)
示例#3
0
文件: pytun.py 项目: binasc/utils
    if not accept_mode and not connect_mode:
        print(_helpText)
        sys.exit(0)

    Tunnel.set_tcp_fin_received_handler(tcptun.on_stream_fin_received)
    Tunnel.set_tcp_closed_handler(tcptun.on_stream_closed)
    Tunnel.set_udp_closed_handler(udptun.on_dgram_closed)
    if accept_mode:
        Tunnel.set_tcp_initial_handler(tcptun.on_server_side_initialized)
        Tunnel.set_udp_initial_handler(udptun.on_server_side_initialized)

    for addr, port, type_, arg in server_list:
        if accept_mode:
            acceptor = Acceptor('TUNNEL')
            acceptor.bind(addr, port)
            acceptor.listen()
            acceptor.set_on_accepted(server_side_on_accepted)
            acceptor.set_on_closed(acceptor_on_closed)
        else:
            via, to = arg
            if type_ == 'tcp':
                acceptor = Acceptor('TCP')
                acceptor.bind(addr, port)
                acceptor.listen()
                acceptor.set_on_accepted(tcptun.gen_on_client_side_accepted(via, to))
                acceptor.set_on_closed(acceptor_on_closed)
            elif type_ == 'udp':
                receiver = Dgram()
                receiver.bind(addr, port)
                receiver.set_on_received(udptun.gen_on_client_side_received(via, to))
                receiver.set_on_closed(acceptor_on_closed)