    def parseConnAddr(self, connAddr):
        '''
        @brief: 解析connAddr字符串
        @param connAddr: 连接地址
        @type connAddr: str
        @return: 解析结果
        @rtype: dict, key是str，val里name是str，
                timeout是float，endpoint是EndPointInfo的list
        '''
        tarsLogger.debug('Communicator:parseConnAddr')
        connAddr = connAddr.strip()
        connInfo = {
            'name': '',
            'timeout': -1,
            'endpoint': []
        }
        if '@' not in connAddr:
            connInfo['name'] = connAddr
            return connInfo

        try:
            tks = connAddr.split('@')
            connInfo['name'] = tks[0]
            tks = tks[1].lower().split(':')
            parser = argparse.ArgumentParser(add_help=False)
            parser.add_argument('-h')
            parser.add_argument('-p')
            parser.add_argument('-t')
            for tk in tks:
                argv = tk.split()
                if argv[0] != 'tcp':
                    raise TarsException(
                        'unsupport transmission protocal : %s' % connInfo['name'])
                mes = parser.parse_args(argv[1:])
                try:
                    ip = mes.h if mes.h is not None else ''
                    port = int(mes.p) if mes.p is not None else '-1'
                    timeout = int(mes.t) if mes.t is not None else '-1'
                    connInfo['endpoint'].append(
                        EndPointInfo(ip, port, timeout))
                except Exception:
                    raise TarsException('Unrecognized option : %s' % mes)
        except TarsException:
            raise

        except Exception as exp:
            raise TarsException(exp)

        return connInfo
@brief: 解析connAddr字符串
@param connAddr: 连接地址
@type connAddr: str
@return: 解析结果
@rtype: dict, key是str，val里name是str，
timeout是float，endpoint是EndPointInfo的list
biliup/Danmaku/tars/__rpc.py