g丅-i9108装部落冲突8本最强布阵解析错误

部落冲突_部落冲突攻略_COC部落战争_Clash of Clans_多玩COC专区
※ ※ ※ ※ ※ ※ ※ ※
以下COC部落,长期进驻多玩COC专区和论坛,部落成员经常发表实用性较高的贴子,积极参加论坛活动,对专区和论坛贡献度相当高。
部落名称首领加入要求部落口号
大黑脸主营招11本潜力活跃玩家!入营: 划船不靠桨,靠的就是浪!平台交流:
CR.DarkOrc老黑顶级全11战营与8-11本混营,审核Q群8160700百战黄沙穿金甲,宏图霸业笑谈中,CR因你更精彩!
gongqiang 活跃九十本,部落战狂热玩家,Q群: 聚集三星良将,挥剑直指战场
一地猪头卧龙神殿-全11本;紫韵龙城-9本以上混营卧看风云变,龙潜藏凡间。神指轻划拨,殿上三星开。
曼联吧will球迷与活跃分子均可加入,Q群人品第一,荣耀永远属于曼联!
以下COC部落,近期在多玩COC专区和论坛表现活跃,部落成员经常参与各种讨论,并且定期发布原创攻略贴。
部落名称首领加入要求部落口号
雷利.NUAA9,10,11本三星打手,群号:君于我如王,誓与君天下
ONE STOPSteve收强89本三星打击战士,QQ群潇洒,极致,嗜战到底!
白夜骑士念念9-10本三星同本热爱部落战朋友,Q群白夜之星,超越巅峰,骑士征途,镌刻传奇
伏羲再临地狱之城满11本好战份子, 强力打手, Q群: 在这里, 你不是一个人在战斗!
设施数据查询
按建筑类型查询
按大本营等级查询
友情链接:怎么样注册谷歌帐号密码,登部落冲突,求详解,我都重玩6次了T_T特别是g什么的邮件?_百度知道
怎么样注册谷歌帐号密码,登部落冲突,求详解,我都重玩6次了T_T特别是g什么的邮件?
我有更好的答案
你先百度设置个极速加速器之后在打开谷歌注册就可以了
其他类似问题
为您推荐:
谷歌的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁苹果园为iOS用户提供和下载,最新的、、、等,分享最权威的资讯、、及解决办法,拥有最火爆的,苹果园一家专注解决iOS所求的网站。暗影同盟:部落冲突电脑版安装教程
暗影同盟:部落冲突
更新时间:
下载:3,724次
平台:Android
OPPO R819T暗影同盟:部落冲突电脑版安装教程
电脑版一直都是玩家们所需求的,不过也有不少玩家下载了游戏的电脑版之后不清楚应该怎么安装。那么到底应该怎样进行电脑版安装教程呢?大家首先应该先下载九游最新版本的游戏安装包以及在电脑上安装一款安卓模拟器,将安装包放到模拟器里面,就可以实现在电脑上玩啦!
请选择品牌
请选择机型R819T
小贴士:建议您想先设置机型,设置后您就直接浏览全部适合您手机的游戏,下载使用更放心。
九游()是手机游戏下载第一门户,提供最新OPPOOPPO R819T下载、礼包、激活码,最好玩的暗影同盟:部落冲突攻略,欢迎访问与玩家交流。
《(League of Shadows: Clans Clash)》是一款塔防游戏,放置你的炮塔,升级武器和建筑,多样的单位和升级系统,使用炮塔、城墙、狙击塔等来保卫你的城镇。
点击查看更多
您可能还想关注:
看了暗影同盟:部落冲突电脑版安装教程的用户还看了:
关于OPPO R819T
OPPO是一家全球注册,集研发、制造和营销于一体的大型高科技企业,产品远销香港、美国、俄罗斯、欧洲、东南亚等市场。 专区提供最新手机游戏免费下载。
R819T的分辨率为720*1280,是OPPO生产的一款触屏手机。OPPO R819T手机用户可通过九游下载。华为荣耀6p和荣耀7系统异常,错误代码10000/0/getTMPSTfail玩部落冲突登不进跳出这个。
15:55 网络整理
后使用快捷导航没有帐号?
荣耀6P不能玩部落冲突(COC)页面登入不进
&登堂入室&
来自:PE-TL20
我以前用三星时,刷机4.2时也出现过这情况,再刷别的版又能登入COC!这应该是个BUG,希望修改一下!
width:100%&&
&自成一派&
来自:浏览器
楼主root过手机了?可能是刷的那个rom不兼容部落冲突吧,华为本身是支持的。
当我第一次知道要发帖的时候,其实我是,是拒绝的,我跟大家讲,我拒绝,因为其实我根本不会发帖。
大家跟我讲,发完加特技,回复duang~duang~duang~,我的发帖,假的假的是假的。
是特技的发帖,是搞笑的成分,是发帖的特技,duang~~
width:100%&&
&登堂入室&
来自:PE-TL20
长相不够PS来凑 发表于
楼主root过手机了?可能是刷的那个rom不兼容部落冲突吧,华为本身是支持的。 ...
没root& & 现在可以上了
width:100%&&
1000万花粉
纪念花粉俱乐部注册花粉数超过1000万
好基友勋章
花粉好机友,注册时间大于99天
国庆回家路途风景黑白中的温暖莫斯科奇妙火车之旅中秋节的红包
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
没有最新动态
关注花粉俱乐部
联系我们:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利FTPd是一款不错的ftp软件了,但今天小编设置问题导致Pure-FTPd出现“登录失败: 530 Login authentication failed”了,下面我们一起来看问题的解决办法了. 再次遭遇Pure-FTPd“登录失败: 530 Login authentication failed”的问题,这一次的原因竟然是虚拟用户uid小于pure-ftpd.conf中的MinUID值,现在详细说明整个查错过程。 一般情况下,我是使用yum来安装pure-ftpd,并直接使用PureDB来验证
OS X Yosemite无法登陆怎么办 osxyosemite登录失败原因 OS X Yosemite今日正式发布,同事升级到最新“优胜美地”版之后遇到了无法登录无敌风火轮问题。经过一番折腾,发现竟然是因为之前安装了搜狗输入法Mac版。 具体原因不明,据说安装最新版的搜狗输入法Mac版已经解决此问题。 解决办法: 1.强制关机重启 2.开机时按住“Command键+S”,进入单用户模式 2.输入命令“mount -uaw”,进入输入法管理界面 3.rm -rf /Library/Input M
微信如今变的越来越火,因此小编最近也开始在安卓手机上安装了微信,不过令笔者奇怪的是每次使用自己的QQ号码登录微信总是登录失败,提示“登录失败(4,-69)&,不知道是这么回事,在百度搜索了一下也发现很多朋友遇到了与笔者相同的问题,不少网友建议卸载手机上的微信再安装试试,其实小编试过了都没用,后来通过查阅了不少资料才明白是因为什么导致微信登陆失败(4,-69),这里与大家分享下,希望对遇到类似问题的朋友有所帮助。 手机微信技巧:微信好友怎么恢复 教你怎么恢复微信好友 微信公众平台 其实导致在手机上
qq音乐登录失败怎么回事?小编带来了qq音乐登陆不上解决方法,为什么无法登陆qq音乐呢?如果你也想知道原因的话,就请看下文介绍并解决问题吧。 法一、检查放火墙是否禁止QQ音乐访问,如果您使用“瑞星”、“金山网镖”、“天网”等防火墙,请查看是否您设置了“禁止使用QQ音乐及插件”,将“禁止”状态修改为“允许”状态,或退出防火墙后再试。 法二、利用360安全卫士进行问题修复,打开安全卫士界面,点击菜单栏上的人工服务、找到QQ问题、找到qq相关产品无法登陆选项,点击立即修复。修复完成
QQ音乐登录失败原因分析: 一、木马病毒对qq音乐2014的必要组件或文件进行破坏,导致QQ音乐登录失败,登陆不上的情况发生。 二、Windows系统防火墙(或其他安全软件)对更新后的QQ音乐程序采取了阻止连接网络的策略,致使QQ音乐不能正常联通网络,登录补上。 三、本地网络连接出现问题,(例如:网络慢就会导致这个问题)或是QQ程序在更新过程中出现版本信息不兼容的问题导致。 QQ音乐登陆不了解决办法 1、最有可能导致QQ音乐2014登录失败的原因就是木马病毒,如果您发现电脑有这种现象时建议使用金
QQ音乐登录失败原因分析: 一、木马病毒对qq音乐2014的必要组件或文件进行破坏,导致QQ音乐登录失败,登陆不上的情况发生。 二、Windows系统防火墙(或其他安全软件)对更新后的QQ音乐程序采取了阻止连接网络的策略,致使QQ音乐不能正常联通网络,登录补上。 三、本地网络连接出现问题,(例如:网络慢就会导致这个问题)或是QQ程序在更新过程中出现版本信息不兼容的问题导致。 QQ音乐登陆不了解决办法 1、最有可能导致QQ音乐2014登录失败的原因就是木马病毒,如果您发现电脑有这种现象时建议使用金
最近有不少朋友都遇到了微信5.0会自动关闭的问题,很多朋友不知道是什么原因,也不知道如何解决。多数朋友遇到微信5.0自动退出,只能进行重新登录来解决,但是一旦退出了,就说明微信5.0无法接受消息,对于喜欢后台挂微信的朋友来说,很不方便。微信5.0会自动关闭怎么回事,又该如何解决呢,以下小编来给大家解答下。 软件下载:微信5.0 for android 官方安装版 微信5.0会自动关闭怎么回事 微信5.0自动退出的解决办法 对于这种微信5.0强制自动关闭,导致无法接受到消息的问题,主要跟手机内存(
网银登录方式一般有证书登录、用户名登录、卡号登录,但是有时候无论是采用哪种登录方式,都会提示:尊敬的客户:“您的浏览器内核为(Netscape),我行银行暂不支持此浏览器,请您使用IE浏览器登录。” 进入网银登录界面,单击浏览器菜单栏的“工具”,然后选择“兼容性视图设置(B)”。 在弹出的对话框中,在“添加到此(D)”栏下,会自动出现了网银网址(您也可以手动输入)。这里,我们点击“添加”按钮。 这样网址就会出现在“已添加到兼容性视图中的(W)”中。点击“关闭”按钮。最下面的两项也都应
法一、检查网络放火墙是否禁止QQ音乐访问网络,如果您使用“瑞星”、“金山网镖”、“天网”等防火墙,请查看是否您设置了“禁止使用QQ音乐及插件”,将“禁止”状态修改为“允许”状态,或退出防火墙后再试。 法二、利用360安全卫士进行问题修复,打开安全卫士界面,点击菜单栏上的人工服务、找到QQ问题、找到qq相关产品无法登陆选项,点击立即修复。修复完成后,重新打开QQ音乐,应该就可以了。 法三、实在还是不行,那么请重新安装qq音乐。
[1]关闭杀软等安全软件 =&右键图标退出. [2]修改最大全局连接数 =&配置中心 =&我的下载 =&常用设置 =&连接管理 =&全局最大连接数修改为100后点击右上角应用. [3]重新启动电脑.网络 =&拔了网线重新连接或者重新启动路由器,也可以尝试不连接路由. [4]删除ver1重新安装迅雷,请在C:Program FilesCommon FilesThunder NetworkTP里把Ver1文件删除(连同Ver1文件夹一起删除)然后卸载迅雷,再到迅雷软件
同时,远程桌面守护还可以帮助用户避免因为安全策略端口保护规则设置不当引起的远程登录被禁止问题. 软件下载:服务器安全狗 v4.0 http://www./softs/35203.html 在开启远程桌面守护功能之后,如果遇到服务器远程桌面登录失败,请联系机房,暂停服务器安全狗远程桌面守护功能,即可解决问题。 远程登录端口的设置: 对于服务器远程登录端口的添加,系统可自动获取,并添加到“远程登录端口”,用户不需要再手动添加。 图1.远程登录端口设置 同时,端口对话框还允许用户直接在此更改用于进行远
图1 那安全策略有什么作用,用户又该如何进行设置能起到最好的效果呢?下面我们一起来看看: 软件下载:服务器安全狗 v4.0 http://www./softs/35203.html 服务器安全狗安全策略功能主要通过执行具体的端口保护规则,限制或者允许进程对端口的连接请求,来保护服务器安全。 用户可以通过单击操作界面右上方的按钮“已开启”/“已关闭”按钮来开启/关闭安全策略功能。用户必须开启安全策略功能,所有端口保护规则才会生效,否则所有关于端口的设置都为无效。如下图所示: 图2.开启安全策略功能
telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器
WindowsXP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复WindowsXP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼。 从“控制面板”中找到“用户账户”项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项“阻止一个已忘记的密码”,点击后便可打开“忘记密码向导”,向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的密码,很快便可以创建一张密码重设盘。 以后,当我们忘记了账户密
前些时谈了一下如何屏蔽对网站服务器的扫描,属于前台防御。后来 Felix 发了一篇 blog 提到将多次尝试 SSH 登录失败的 IP ban 掉,才想起来去看一下日志,没想到后院起火了。 查看日志文件: 复制代码 代码如下: $ sudo cat /var/log/auth.log 没想到满屏满屏的往下刷,全是: 复制代码 代码如下: $ sudo grep &Failed password for root& /var/log/auth.log | awk '{print $11}' | s
WindowsXP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复WindowsXP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼。 从“控制面板”中找到“用户账户”项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项“阻止一个已忘记的密码”,点击后便可打开“忘记密码向导”,向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的密码,很快便可以创建一张密码重设盘。 以后,当我们忘记了账户密码的
Windows XP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼。 从“控制面板”中找到“用户账户”项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项“阻止一个已忘记的密码”,点击后便可打开“忘记密码向导”,向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的密码,很快便可以创建一张密码重设盘。 以后,当我们忘记了账户密码的时候,在
QQ音乐2014登陆失败怎么办? 造成QQ音乐214登录不上现象的原因有如下三种可能: 一、木马病毒对qq音乐2014的必要组件或文件进行破坏,导致QQ音乐登录失败,登陆不上的情况发生。 二、Windows系统防火墙(或其他安全软件)对更新后的QQ音乐程序采取了阻止连接网络的策略,致使QQ音乐不能正常联通网络,登录补上。 三、本地网络连接出现问题,(例如:网络慢就会导致这个问题)或是QQ程序在更新过程中出现版本信息不兼容的问题导致。 解决这些问题的方法有: 1、最有可能导致QQ音乐2014登录失
最近两天重装了一个win2003 操作系统!, 上面共享了一个HP M1136 的本地打印机!奇怪的问题出现了, 我在win2003上设置好共享打印机以后公司的一部分同事的电脑可以通过 /192.168.1.149 正常登陆并使用共享的打印机, 但是我自己的win7系统通过 /192.168.1.149到登陆界面但是就是登陆不成功,提示如下图所示: 很郁闷啊 ,因为别人可以正常访问所以肯定是我自己电脑设置的问题!! 经过很长时间的查找终于找到了解决方法!Win7下无法访问局域网打印机(登录失败:
如果你留意Windows系统的安全日志,在那些事件描述中你将会发现里面的“登录类型”并非全部相同,难道除了在键盘上进行交互式登录(登录类型1)之外还有其它类型吗? 不错,Windows为了让你从日志中获得更多有价值的信息,它细分了很多种登录类型,以便让你区分登录者到底是从本地登录,还是从网络登录,以及其它更多的登录方式。因为了解了这些登录方式,将有助于你从事件日志中发现可疑的黑客行为,并能够判断其攻击方式。下面我们就来详细地看看Windows的登录类型。 登录类型2:交互式登录(Interact华为手机为什么系统错误_部落战争吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:600,075贴子:
华为手机为什么系统错误
今天为什么部落冲突登不上去是手机的事吗
楼楼手机是华为 普通型...
这个怎么取消掉
1楼我占用了!     ...
360今天给我虚假推送更...
用华为手机的吧友们 你...
Mate 7、P7、G7的热卖,...
齐鲁网 近日,青岛贾先...
我也是的手机!X1游戏登陆不了了!为什么!
我的也是系统,也登录不上,提示系统异常,错误码: 1000/0/gettmpst fail!
我的也一样
我的华为也是
易行自然:看九楼的解决方法
怎么弄啊我去。。
我用完这个方法号没了咋办。。艹
内&&容:使用签名档&&
保存至快速回贴项目语言:None
权限:read-only(如需更高权限请先加入项目)
Alibaba Group Holding Limited
* This prog you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
* Version: $Id: tair_client.cpp -10 04:32:51Z yuming $
* Authors:
#include &tair_client.hpp&
#include &define.hpp&
#include &item_manager.hpp&
#include &util.hpp&
#include &dump_data_info.hpp&
#include &query_info_packet.hpp&
namespace tair {
tair_client::tair_client()
is_config_server =
//server_id = 0;
//m_slaveServerId = 0;
group_name = NULL;
cmd_line = NULL;
cmd_file_name = NULL;
is_cancel =
server_addr = NULL;
slave_server_addr = NULL;
key_format = 0;
default_area = 0;
cmd_map[&help&] = &tair_client::do_cmd_
cmd_map[&quit&] = &tair_client::do_cmd_
cmd_map[&exit&] = &tair_client::do_cmd_
cmd_map[&put&] = &tair_client::do_cmd_
cmd_map[&incr&] = &tair_client::do_cmd_
cmd_map[&get&] = &tair_client::do_cmd_
cmd_map[&mget&] = &tair_client::do_cmd_
cmd_map[&remove&] = &tair_client::do_cmd_
cmd_map[&mremove&] = &tair_client::do_cmd_
cmd_map[&delall&] = &tair_client::do_cmd_remove_
cmd_map[&dump&] = &tair_client::do_cmd_dump_
cmd_map[&stat&] = &tair_client::do_cmd_
cmd_map[&setstatus&] = &tair_client::do_cmd_
cmd_map[&getstatus&] = &tair_client::do_cmd_
cmd_map[&gettmpdownsvr&] = &tair_client::do_cmd_
cmd_map[&resetserver&] = &tair_client::do_cmd_
cmd_map[&flushmmt&] = &tair_client::do_cmd_
cmd_map[&resetdb&] = &tair_client::do_cmd_
// cmd_map[&additems&] = &tair_client::doCmdAddI
tair_client::~tair_client()
if (group_name) {
free(group_name);
group_name = NULL;
if (cmd_line) {
free(cmd_line);
cmd_line = NULL;
if (cmd_file_name) {
free(cmd_file_name);
cmd_file_name = NULL;
// clear cmd_client_map
for (std::map&std::string, tair_client_impl*&::iterator it = cmd_client_map.begin();
it != cmd_client_map.end(); it++) {
if (it-&second != &client_helper) {
delete it-&
void tair_client::print_usage(char *prog_name)
fprintf(stderr, &%s -s server:port\n OR\n%s -c configserver:port -g groupname\n\n&
-s, --server
data server,default port:%d\n&
-c, --configserver
default port: %d\n&
-g, --groupname
group name\n&
-l, --cmd_line
exec cmd\n&
-q, --cmd_file
script file\n&
-h, --help
print this message\n&
-v, --verbose
print debug info\n&
-V, --version
print version\n\n&,
prog_name, prog_name, TAIR_SERVER_DEFAULT_PORT, TAIR_CONFIG_SERVER_DEFAULT_PORT);
bool tair_client::parse_cmd_line(int argc, char *const argv[])
const char *optstring = &s:c:g:hVvl:q:&;
struct option longopts[] = {
{&server&, 1, NULL, 's'},
{&configserver&, 1, NULL, 'c'},
{&groupname&, 1, NULL, 'g'},
{&cmd_line&, 1, NULL, 'l'},
{&cmd_file&, 1, NULL, 'q'},
{&help&, 0, NULL, 'h'},
{&verbose&, 0, NULL, 'v'},
{&version&, 0, NULL, 'V'},
{0, 0, 0, 0}
opterr = 0;
while ((opt = getopt_long(argc, argv, optstring, longopts, NULL)) != -1) {
switch (opt) {
case 'c': {
if (server_addr != NULL && is_config_server == false) {
//uint64_t id = tbsys::CNetUtil::strToAddr(optarg, TAIR_CONFIG_SERVER_DEFAULT_PORT);
if (server_addr == NULL) {
server_addr =
slave_server_addr =
is_config_server =
case 's': {
if (server_addr != NULL && is_config_server == true) {
server_addr =
//server_id = tbsys::CNetUtil::strToAddr(optarg, TAIR_SERVER_DEFAULT_PORT);
case 'g':
group_name = strdup(optarg);
case 'l':
cmd_line = strdup(optarg);
case 'q':
cmd_file_name = strdup(optarg);
case 'v':
TBSYS_LOGGER.setLogLevel(&DEBUG&);
case 'V':
fprintf(stderr, &BUILD_TIME: %s %s\n&, __DATE__, __TIME__);
case 'h':
print_usage(argv[0]);
if (server_addr == NULL || (is_config_server == true && group_name == NULL)) {
print_usage(argv[0]);
cmd_call tair_client::parse_cmd(char *key, VSTRING &param)
cmdCall = NULL;
while (*key == ' ') key++;
token = key + strlen(key);
while (*(token-1) == ' ' || *(token-1) == '\n' || *(token-1) == '\r') token --;
*token = '\0';
if (key[0] == '\0') {
return NULL;
token = strchr(key, ' ');
if (token != NULL) {
*token = '\0';
str_cmdcall_map_iter it = cmd_map.find(tbsys::CStringUtil::strToLower(key));
if (it == cmd_map.end()) {
return NULL;
cmdCall = it-&
if (token != NULL) {
key = NULL;
param.clear();
while ((token = strsep(&key, & &)) != NULL) {
if (token[0] == '\0')
param.push_back(token);
return cmdC
void tair_client::cancel()
is_cancel =
bool tair_client::start()
bool done =
client_helper.set_timeout(5000);
client_helper.set_can_mock(true);
if (is_config_server) {
done = client_helper.startup(server_addr, slave_server_addr, group_name);
//done = client_helper.startup(server_id);
if (done == false) {
fprintf(stderr, &%s cann't connect.\n&, server_addr);
// add to client map
cmd_client_map[group_name] = &client_
char buffer[CMD_MAX_LEN];
if (cmd_line != NULL) {
strcpy(buffer, cmd_line);
vector&char*& cmd_
tbsys::CStringUtil::split(buffer, &;&, cmd_list);
for(uint32_t i=0; i&cmd_list.size(); i++) {
cmd_call this_cmd_call = parse_cmd(cmd_list[i], param);
if (this_cmd_call == NULL) {
(this-&*this_cmd_call)(param);
} else if (cmd_file_name != NULL) {
FILE *fp = fopen(cmd_file_name, &rb&);
if (fp != NULL) {
while(fgets(buffer, CMD_MAX_LEN, fp)) {
cmd_call this_cmd_call = parse_cmd(buffer, param);
if (this_cmd_call == NULL) {
fprintf(stderr, &unknown command.\n\n&);
(this-&*this_cmd_call)(param);
fclose(fp);
fprintf(stderr, &open failure: %s\n\n&, cmd_file_name);
while (done) {
if (fprintf(stderr, &TAIR& &) & 0)
if (fgets(buffer, CMD_MAX_LEN, stdin) == NULL) {
cmd_call this_cmd_call = parse_cmd(buffer, param);
if (this_cmd_call == NULL) {
fprintf(stderr, &unknown command.\n\n&);
if (this_cmd_call == &tair_client::do_cmd_quit) {
(this-&*this_cmd_call)(param);
is_cancel =
client_helper.close();
///////////////////////////////////////////////////////////////////////////////////////////////////
void tair_client::do_cmd_quit(VSTRING &param)
void tair_client::print_help(const char *cmd)
if (cmd == NULL || strcmp(cmd, &put&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: put key data [area] [expired]\n&
&DESCRIPTION: area
- namespace , default: 0\n&
expired- in seconds, default: 0,never expired\n&
if (cmd == NULL || strcmp(cmd, &incr&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: incr key [count] [initValue] [area]\n&
&DESCRIPTION: initValue , default: 0\n&
if (cmd == NULL || strcmp(cmd, &get&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: get key [area]\n&
if (cmd == NULL || strcmp(cmd, &mget&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: mget key1 ... keyn area\n&
if (cmd == NULL || strcmp(cmd, &remove&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: remove key [area]\n&
if (cmd == NULL || strcmp(cmd, &mremove&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: mremove key1 ... keyn area\n&
if (cmd == NULL || strcmp(cmd, &delall&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
&DESCRIPTION: get stat info&
if (cmd == NULL || strcmp(cmd, &stat&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: delall area\n&
&DESCRIPTION: delete all data of [area]&
if (cmd == NULL || strcmp(cmd, &dump&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: dump dumpinfo.txt\n&
&DESCRIPTION: dumpinfo.txt is a config file of dump,syntax:\n&
&area start_time end_time,eg:&
if (cmd == NULL || strcmp(cmd, &setstatus&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: setstatus group status\n&
&DESCRIPTION: set group to on or off\n&
&\tgroup: groupname to set, status: on/off\n&
if (cmd == NULL || strcmp(cmd, &getstatus&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: getstatus group1 group2...\n&
&DESCRIPTION: get status of group(s)\n&
&\tgroup[n]: groupnames of which to get status\n&
if (cmd == NULL || strcmp(cmd, &gettmpdownsvr&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: gettmpdownsvr group1 group2...\n&
&DESCRIPTION: get tmp down servers of group(s)\n&
&\tgroup[n]: groupnames of which to get status\n&
if (cmd == NULL || strcmp(cmd, &resetserver&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: resetserver group [ds_addr ds_addr]\n&
&DESCRIPTION: clear the all or some specified by `ds_addr down server in group, namely 'tmp_down_server' in group.conf\n&
&\tgroup: groupname to reset\n&
&\tds_addr: dataserver to reset\n&
if (cmd == NULL || strcmp(cmd, &flushmmt&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: flushmmt group [ds_addr]\n&
&DESCRIPTION: flush memtable of all tairserver or specified `ds_addr one of `group. WARNING: use this cmd carefully\n&
&\tgroup: groupname\n&
&\tds_addr: address of tairserver\n&
if (cmd == NULL || strcmp(cmd, &resetdb&) == 0) {
fprintf(stderr,
&------------------------------------------------\n&
: resetdb group [ds_addr]\n&
&DESCRIPTION: reset db of all tairserver or specified `ds_addr one of `group. WARNING: use this cmd carefully\n&
&\tgroup: groupname\n&
&\tds_addr: address of tairserver\n&
fprintf(stderr, &\n&);
void tair_client::do_cmd_help(VSTRING &param)
if (param.size() == 0U) {
print_help(NULL);
print_help(param[0]);
char *tair_client::canonical_key(char *key, char **akey, int *size)
char *pdata =
if (key_format == 1) { // java
*size = strlen(key)+2;
pdata = (char*)malloc(*size);
pdata[0] = '\0';
pdata[1] = '\4';
memcpy(pdata+2, key, strlen(key));
} else if (key_format == 2) { // raw
pdata = (char*)malloc(strlen(key)+1);
util::string_util::conv_raw_string(key, pdata, size);
*size = strlen(key)+1;
void tair_client::do_cmd_put(VSTRING &param)
if (param.size() & 2U || param.size() & 4U) {
print_help(&put&);
int area = default_
int expired = 0;
if (param.size() & 2U) area = atoi(param[2]);
if (param.size() & 3U) expired = atoi(param[3]);
char *akey = NULL;
int pkeysize = 0;
char *pkey = canonical_key(param[0], &akey, &pkeysize);
data_entry key(pkey, pkeysize, false);
data_entry data(param[1], false);
int ret = client_helper.put(area, key, data, expired, 0);
fprintf(stderr, &put: %s\n&, client_helper.get_error_msg(ret));
if (akey) free(akey);
void tair_client::do_cmd_addcount(VSTRING &param)
if (param.size() & 1U) {
print_help(&incr&);
int count = 1;
int initValue = 0;
int area = default_
if (param.size() & 1U) count = atoi(param[1]);
if (param.size() & 2U) initValue = atoi(param[2]);
if (param.size() & 3U) area = atoi(param[3]);
char *akey = NULL;
int pkeysize = 0;
char *pkey = canonical_key(param[0], &akey, &pkeysize);
data_entry key(pkey, pkeysize, false);
int retCount = 0;
int ret = client_helper.add_count(area, key, count, &retCount, initValue);
if (ret != TAIR_RETURN_SUCCESS) {
fprintf(stderr, &add failed:%d,%s.\n&, ret,client_helper.get_error_msg(ret));
fprintf(stderr, &retCount: %d\n&, retCount);
if (akey) free(akey);
void tair_client::do_cmd_get(VSTRING &param)
if (param.size() & 1U || param.size() & 2U ) {
print_help(&get&);
int area = default_
if (param.size() &= 2U) {
char *p=param[1];
if (*p == 'n') {
area |= TAIR_FLAG_NOEXP;
area |= atoi(p);
char *akey = NULL;
int pkeysize = 0;
char *pkey = canonical_key(param[0], &akey, &pkeysize);
data_entry key(pkey, pkeysize, false);
data_entry *data = NULL;
int ret = client_helper.get(area, key, data);
if (ret != TAIR_RETURN_SUCCESS) {
fprintf(stderr, &get failed: %s.\n&,client_helper.get_error_msg(ret));
} else if (data != NULL) {
char *p = util::string_util::conv_show_string(data-&get_data(), data-&get_size());
fprintf(stderr, &KEY: %s, LEN: %d\n raw data: %s, %s\n&, param[0], data-&get_size(), data-&get_data(), p);
if (akey) free(akey);
void tair_client::do_cmd_mget(VSTRING &param)
if (param.size() & 2U) {
print_help(&mget&);
int area = default_
char *p=param[param.size() -1];
if (*p == 'n') {
area |= TAIR_FLAG_NOEXP;
area |= atoi(p);
fprintf(stderr, &mget area: %d\n&, area);
vector&data_entry*&
for (int i = 0; i & static_cast&int&(param.size() - 1); ++i)
char *akey = NULL;
int pkeysize = 0;
fprintf(stderr, &mget key index: %u, key: %s\n&, i, param[i]);
char *pkey = canonical_key(param[i], &akey, &pkeysize);
data_entry* key = new data_entry(pkey, pkeysize, false);
keys.push_back(key);
if (akey) free(akey);
tair_keyvalue_
int ret = client_helper.mget(area, keys, datas);
if (ret == TAIR_RETURN_SUCCESS || ret == TAIR_RETURN_PARTIAL_SUCCESS)
tair_keyvalue_map::iterator mit = datas.begin();
for ( ; mit != datas.end(); ++mit)
char *key = util::string_util::conv_show_string(mit-&first-&get_data(), mit-&first-&get_size());
char *data = util::string_util::conv_show_string(mit-&second-&get_data(), mit-&second-&get_size());
fprintf(stderr, &KEY: %s, RAW VALUE: %s, VALUE: %s, LEN: %d\n&,
key, mit-&second-&get_data(), data, mit-&second-&get_size());
free(key);
free(data);
fprintf(stderr, &get success, ret: %d.\n&, ret);
fprintf(stderr, &get failed: %s, ret: %d.\n&, client_helper.get_error_msg(ret), ret);
vector&data_entry*&::iterator vit = keys.begin();
for ( ; vit != keys.end(); ++vit)
(*vit) = NULL;
tair_keyvalue_map::iterator kv_mit = datas.begin();
for ( ; kv_mit != datas.end(); )
data_entry* key = kv_mit-&
data_entry* value = kv_mit-&
datas.erase(kv_mit++);
key = NULL;
value = NULL;
void tair_client::do_cmd_remove(VSTRING &param)
if (param.size() & 2U) {
print_help(&mremove&);
int area = default_
if (param.size() &= 2U) area = atoi(param[1]);
char *akey = NULL;
int pkeysize = 0;
char *pkey = canonical_key(param[0], &akey, &pkeysize);
data_entry key(pkey, pkeysize, false);
int ret = client_helper.remove(area, key);
fprintf(stderr, &remove: %s.\n&, client_helper.get_error_msg(ret));
if (akey) free(akey);
void tair_client::do_cmd_mremove(VSTRING &param)
if (param.size() & 2U ) {
print_help(&mremove&);
int area = default_
char *p=param[param.size() -1];
if (*p == 'n') {
area |= TAIR_FLAG_NOEXP;
area |= atoi(p);
fprintf(stderr, &mremove area: %d\n&, area);
vector&data_entry*&
for (int i = 0; i & static_cast&int&(param.size() - 1); ++i)
char *akey = NULL;
int pkeysize = 0;
fprintf(stderr, &mremove key index: %u, key: %s\n&, i, param[i]);
char *pkey = canonical_key(param[i], &akey, &pkeysize);
data_entry* key = new data_entry(pkey, pkeysize, false);
keys.push_back(key);
if (akey) free(akey);
//todo delete key
int ret = client_helper.mdelete(area, keys);
fprintf(stderr, &mremove: %s, ret: %d\n&, client_helper.get_error_msg(ret), ret);
vector&data_entry*&::iterator vit = keys.begin();
for ( ; vit != keys.end(); ++vit)
(*vit) = NULL;
void tair_client::do_cmd_stat(VSTRING &param)
tair_client_impl* client = get_cmd_client(group_name);
tbsys::STR_STR_MAP config_
uint32_t version = 0;
int ret = client-&retrieve_server_config(false, config_map, version);
if (ret != TAIR_RETURN_SUCCESS)
log_error(&retrieve_server_config fail, ret: %d&, ret);
TairClusterType type = tair::get_cluster_type_by_config(config_map);
switch(type)
case TAIR_CLUSTER_TYPE_MULTI_CLUSTER:
do_cmd_stat_multi_cluster(config_map);
case TAIR_CLUSTER_TYPE_SINGLE_CLUSTER:
do_cmd_stat_single_cluster();
void tair_client::do_cmd_stat_multi_cluster(tbsys::STR_STR_MAP &config_map)
//get sub groups
vector&string&
get_sub_groups(config_map, groups);
if (groups.size() != 0)
vector&string&::const_
vector&string& cmd_
for (it = groups.begin(); it != groups.end(); it++)
cmd_params.push_back(*it);
vector&string&
vector&char *&
int ret = client_helper.op_cmd_to_cs(TAIR_SERVER_CMD_GET_GROUP_STATUS, &cmd_params, &status);
if (ret != TAIR_RETURN_SUCCESS)
fprintf(stderr, &get group status failed %d\n&, ret);
static const char* tair_status_on
= & group_status=on&;
static const char* tair_status_off = & group_status=off&;
//get active group stat
map&string, long& out_
map&string, long&::iterator it3;
for (size_t i = 0; i & status.size(); ++i)
fprintf(stderr, &\t%s\n&, status[i].c_str());
values.clear();
tbsys::CStringUtil::split((char *)status[i].c_str(), &:&, values);
if (values.size() == 2 && strncmp(values[1], tair_status_on, strlen(tair_status_on)) == 0)
tair_client_impl* client = get_cmd_client(values[0]);
if (client)
map&string, string& stat_
map&string, string&::const_iterator it2;
client-&query_from_configserver(request_query_info::Q_STAT_INFO, values[0], stat_info);
for (it2=stat_info.begin(); it2 != stat_info.end(); it2++)
if ((it3 = out_info.find(it2-&first)) != out_info.end())
long old_ops = it3-&
long ops = strtol(it2-&second.c_str(), NULL, 10);
it3-&second = old_ops +
long ops = strtol(it2-&second.c_str(), NULL, 10);
out_info.insert(std::pair&string, long&(it2-&first, ops));
for (it3 = out_info.begin(); it3 != out_info.end(); it3++)
//just print xxCount
if (it3-&first.find(&Count&) != std::string::npos)
fprintf(stderr, &%s:%lu\n&, it3-&first.c_str(), it3-&second);
fprintf(stderr, &no sub groups found&);
void tair_client::do_cmd_stat_single_cluster() {
map&string, string& out_
map&string, string&::
string group = group_
client_helper.query_from_configserver(request_query_info::Q_AREA_CAPACITY, group, out_info);
fprintf(stderr,&%20s %20s\n&,&area&,&quota&);
for (it=out_info.begin(); it != out_info.end(); it++) {
fprintf(stderr,&%20s %20s\n&, it-&first.c_str(), it-&second.c_str());
fprintf(stderr,&\n&);
fprintf(stderr,&%20s %20s\n&,&server&,&status&);
client_helper.query_from_configserver(request_query_info::Q_DATA_SEVER_INFO, group, out_info);
for (it=out_info.begin(); it != out_info.end(); it++) {
fprintf(stderr,&%20s %20s\n&, it-&first.c_str(), it-&second.c_str());
fprintf(stderr,&\n&);
for (it=out_info.begin(); it != out_info.end(); it++) {
map&string, string& out_info2;
map&string, string&::iterator it2;
client_helper.query_from_configserver(request_query_info::Q_STAT_INFO, group, out_info2, tbsys::CNetUtil::strToAddr(it-&first.c_str(), 0));
for (it2=out_info2.begin(); it2 != out_info2.end(); it2++) {
fprintf(stderr,&%s : %s %s\n&,it-&first.c_str(), it2-&first.c_str(), it2-&second.c_str());
map&string, string& out_info2;
map&string, string&::iterator it2;
client_helper.query_from_configserver(request_query_info::Q_STAT_INFO, group, out_info2, 0);
for (it2=out_info2.begin(); it2 != out_info2.end(); it2++) {
fprintf(stderr,&%s %s\n&, it2-&first.c_str(), it2-&second.c_str());
void tair_client::do_cmd_remove_area(VSTRING &param)
if (param.size() != 1U) {
print_help(&delall&);
int area = atoi(param[0]);
if(area & 0){
int ret = client_helper.remove_area(area);
fprintf(stderr, &removeArea: area:%d,%s\n&, area,client_helper.get_error_msg(ret));
void tair_client::do_cmd_dump_area(VSTRING &param)
if (param.size() != 1U) {
print_help(&dump&);
FILE *fp = fopen(param[0],&r&);
if (fp == NULL){
fprintf(stderr,&open file %s failed&,param[0]);
char buf[1024];
struct tm start_
struct tm end_
set&dump_meta_info& dump_
while(fgets(buf,sizeof(buf),fp) != NULL){
dump_meta_
if (sscanf(buf,&%d %4d-%2d-%2d %2d:%2d:%2d %4d-%2d-%2d %2d:%2d:%2d&,\
&info.area,\
&start_time.tm_year,&start_time.tm_mon,\
&start_time.tm_mday,&start_time.tm_hour,\
&start_time.tm_min,&start_time.tm_sec,
&end_time.tm_year,&end_time.tm_mon,\
&end_time.tm_mday,&end_time.tm_hour,\
&end_time.tm_min,&end_time.tm_sec) != 13){
fprintf(stderr,&syntax error : %s&,buf);
start_time.tm_year -= 1900;
end_time.tm_year -= 1900;
start_time.tm_mon -= 1;
end_time.tm_mon -= 1;
if (info.area & -1 || info.area &= TAIR_MAX_AREA_COUNT){
fprintf(stderr,&ilegal area&);
time_t tmp_time = -1;
if ( (tmp_time = mktime(&start_time)) == static_cast&time_t&(-1)){
fprintf(stderr,&incorrect time&);
info.start_time = static_cast&uint32_t&(tmp_time);
if ( (tmp_time = mktime(&end_time)) == static_cast&time_t&(-1)){
fprintf(stderr,&incorrect time&);
info.end_time = static_cast&uint32_t&(tmp_time);
if (info.start_time & info.end_time){
std::swap(info.start_time,info.end_time);
dump_set.insert(info);
fclose(fp);
if (dump_set.empty()){
fprintf(stderr,&what do you want to dump?&);
int ret = client_helper.dump_area(dump_set);
fprintf(stderr, &dump : %s\n&,client_helper.get_error_msg(ret));
void tair_client::do_cmd_setstatus(VSTRING &params) {
if (params.size() != 2) {
print_help(&setstatus&);
std::vector&std::string& cmd_params(params.begin(), params.end());
int ret = client_helper.op_cmd_to_cs(TAIR_SERVER_CMD_SET_GROUP_STATUS, &cmd_params, NULL);
if (ret == TAIR_RETURN_SUCCESS) {
fprintf(stderr, &successful\n&);
fprintf(stderr, &failed with %d\n&, ret);
void tair_client::do_cmd_getstatus(VSTRING &params) {
if (params.empty()) {
print_help(&getstatus&);
vector&string&
std::vector&std::string& cmd_params(params.begin(), params.end());
int ret = client_helper.op_cmd_to_cs(TAIR_SERVER_CMD_GET_GROUP_STATUS, &cmd_params, &status);
if (TAIR_RETURN_SUCCESS == ret) {
for (size_t i = 0; i & status.size(); ++i) {
fprintf(stderr, &\t%s\n&, status[i].c_str());
fprintf(stderr, &failed with %d\n&, ret);
void tair_client::do_cmd_gettmpdownsvr(VSTRING &params) {
if (params.empty()) {
print_help(&gettmpdownsvr&);
vector&string& down_
std::vector&std::string& cmd_params(params.begin(), params.end());
int ret = client_helper.op_cmd_to_cs(TAIR_SERVER_CMD_GET_TMP_DOWN_SERVER, &cmd_params, &down_servers);
if (TAIR_RETURN_SUCCESS == ret) {
for (size_t i = 0; i & down_servers.size(); ++i) {
fprintf(stderr, &\t%s\n&, down_servers[i].c_str());
fprintf(stderr, &failed with %d\n&, ret);
void tair_client::do_cmd_resetserver(VSTRING &params) {
if (params.size() & 1) {
print_help(&resetserver&);
std::vector&std::string& cmd_params(params.begin(), params.end());
int ret = client_helper.op_cmd_to_cs(TAIR_SERVER_CMD_RESET_DS, &cmd_params, NULL);
if (ret == TAIR_RETURN_SUCCESS) {
fprintf(stderr, &successful\n&);
fprintf(stderr, &failed with %d\n&, ret);
void tair_client::do_cmd_flushmmt(VSTRING &params) {
if (params.size() & 1 || params.size() & 2) {
print_help(&flushmmt&);
std::vector&std::string& cmd_
tair_client_impl* cmd_client = get_cmd_client(params[0]);
if (cmd_client == NULL) {
fprintf(stderr, &connect group %s fail\n&, params[0]);
int ret = cmd_client-&op_cmd_to_ds(TAIR_SERVER_CMD_FLUSH_MMT, params[0], NULL, NULL, params.size() & 1 ? params[1] : NULL);
if (ret == TAIR_RETURN_SUCCESS) {
fprintf(stderr, &successful\n&);
fprintf(stderr, &failed with %d\n&, ret);
void tair_client::do_cmd_resetdb(VSTRING &params) {
if (params.size() & 1 || params.size() & 2) {
print_help(&resetdb&);
std::vector&std::string& cmd_
tair_client_impl* cmd_client = get_cmd_client(params[0]);
if (cmd_client == NULL) {
fprintf(stderr, &connect group %s fail\n&, params[0]);
int ret = cmd_client-&op_cmd_to_ds(TAIR_SERVER_CMD_RESET_DB, params[0], NULL, NULL, params.size() & 1 ? params[1] : NULL);
if (ret == TAIR_RETURN_SUCCESS) {
fprintf(stderr, &successful\n&);
fprintf(stderr, &failed with %d\n&, ret);
tair_client_impl* tair_client::get_cmd_client(const char* cmd_group_name) {
if (cmd_group_name == NULL) {
return NULL;
tair_client_impl* cmd_client = NULL;
std::map&std::string, tair_client_impl*&::iterator it = cmd_client_map.find(cmd_group_name);
if (it == cmd_client_map.end()) {
cmd_client = new tair_client_impl();
cmd_client-&set_timeout(5000);
if (!cmd_client-&startup(server_addr, slave_server_addr, cmd_group_name)) {
fprintf(stderr, &startup cmd client fail. group: %s\n&, cmd_group_name);
delete cmd_
cmd_client = NULL;
cmd_client = it-&
return cmd_
} // namespace tair
/*-----------------------------------------------------------------------------
*-----------------------------------------------------------------------------*/
tair::tair_client _globalC
void sign_handler(int sig)
switch (sig) {
case SIGTERM:
case SIGINT:
_globalClient.cancel();
int main(int argc, char *argv[])
signal(SIGPIPE, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGINT, sign_handler);
signal(SIGTERM, sign_handler);
//TBSYS_LOGGER.setLogLevel(&DEBUG&);
TBSYS_LOGGER.setLogLevel(&ERROR&);
if (_globalClient.parse_cmd_line(argc, argv) == false) {
return EXIT_FAILURE;
if (_globalClient.start()) {
return EXIT_SUCCESS;
return EXIT_FAILURE;
(C)&&2013&&Alibaba&&Inc.&&All&&rights&&resvered.
Powered by
相关阅读 www.
预留广告位

我要回帖

更多关于 部落冲突7本最强布阵 的文章

 

随机推荐