Example #1
0
    def __init__(self,ip,port,CAssignClass,io_loop=None,ssl_options=None, **kwargs):
        self.ip = ip
        self.port = port

        #上一个客户端连接ID
        self._lastClientid = 0
        self._idAllocor = IDAllocor()

        super(CServer, self).__init__(
            io_loop=io_loop, ssl_options=ssl_options,**kwargs)
        if io_loop:
            self.ioloop = io_loop
        else:
            self.ioloop = IOLoop.instance()

        self.cpool = cpool.CConnectionPool.getInstance()
        self.cpool.connect(CAssignClass.getGSArray())

        run()
Example #2
0
class CServer(TCPServer):
    def __init__(self,ip,port,CAssignClass,io_loop=None,ssl_options=None, **kwargs):
        self.ip = ip
        self.port = port

        #上一个客户端连接ID
        self._lastClientid = 0
        self._idAllocor = IDAllocor()

        super(CServer, self).__init__(
            io_loop=io_loop, ssl_options=ssl_options,**kwargs)
        if io_loop:
            self.ioloop = io_loop
        else:
            self.ioloop = IOLoop.instance()

        self.cpool = cpool.CConnectionPool.getInstance()
        self.cpool.connect(CAssignClass.getGSArray())

        run()

    def handle_stream(self, stream, address):
        #客户端连接了
        #todo:加入 C -> GS DICT
        clientid = self._idAllocor.alloc()

        ConnectionBase(stream, clientid, address, self._receiveData_from_client,self._clientCconnect,self._clientClose)

    def _receiveData_from_client(self,connection,body):
        '''接受到客户(玩家)的数据包'''
        #转发到GS服务器端
        self.cpool.send(connection.clientid,body)

    def _clientClose(self,connection):
        '''客户端(玩家)断开连接'''
        self.cpool.clear(connection.clientid)

    def run():
        global server

        if not com._cc.ASSIGN_PROCESS_MODE:
            processFuns.assignGS_2(0)

        #processFuns.regGS(com._cc.CurrIp,com._cc.CurrPort)


        #监听game端口
        print 'map server started,listen on %s' % \
                (self.port)

        server = TcpServer(transport)
        if os.name == 'nt':
            server.listen(com._cc.CurrPort)
        else:
            import tornado.netutil
            import tornado.process
            sockets = tornado.netutil.bind_sockets(self.port)
            tornado.process.fork_processes(0)
            server.add_sockets(sockets)

        #server.io_loop.add_timeout(time.time() + com._cc.CLEAR_INTERVAL_TIME ,clearOnline)

        self.ioloop.start()

    def send_message(message):
        stream.write((message + '\n').encode('utf-8'))