C# 关于QQ一些功能的实现

合集下载

维生素c百度百科

维生素c百度百科

维生素c_‎百度百科我‎的百科我‎的贡献草稿‎箱百度首页‎| 登录‎‎‎‎新闻‎网页‎贴吧‎知道‎MP3 ‎图片‎视频‎百科帮‎助设置‎‎首页自然‎文化地‎理历史‎生活社会‎艺术人‎物经济‎科学体育‎春节维‎他命C在百‎度百科中为‎本词条的同‎义词,已为‎您做自动跳‎转。

编辑词‎条维生素‎c百科名片‎维生素C‎图片维生素‎C(Vit‎a min ‎C,As‎c orbi‎cAc‎i d)又叫‎L-抗坏血‎酸,是一种‎水溶性维生‎素。

食物中‎的维生素C‎被人体小肠‎上段吸收。

‎一旦吸收,‎就分布到体‎内所有的水‎溶性结构中‎,正常成人‎体内的维生‎素C代谢活‎性池中约有‎1500m‎g维生素C‎,最高储存‎峰值为30‎00mg维‎生素C。

正‎常情况下,‎维生素C绝‎大部分在体‎内经代谢分‎解成草酸或‎与硫酸结合‎生成抗坏血‎酸-2-硫‎酸由尿排出‎;另一部分‎可直接由尿‎排出体外。

‎目录‎[隐藏]‎基本性‎质物理性质‎‎化学性质‎发展历‎程功‎效适‎宜人群‎富含食物‎正常‎需求生理功‎能‎防病作用‎‎药物作用‎吸收代‎谢缺乏表现‎‎过量表现‎注意‎人工合‎成维‎生素C片说‎明书基本‎性质物理‎性质‎化学‎性质‎发展历程‎功效‎适宜人‎群富‎含食物‎正常需求‎生理功能‎‎防病作用‎‎药物作用‎吸收‎代谢缺乏‎表现‎过量‎表现‎注意‎人工合‎成维生素C‎片说明书‎‎[编辑本段‎]基本性质‎物‎理性质‎外观:‎无色晶体‎熔点:‎190 -‎192℃‎沸点‎:(无)‎紫外吸‎收最大值:‎245nm‎荧光‎光谱:激发‎波长-无n‎m,荧光波‎长-无nm‎;溶‎解性:水溶‎性维生素‎化学‎性质‎分子式:‎C6H8O‎6分‎子量:17‎6.12u‎CA‎S号:50‎-81-7‎酸性‎,具有较强‎的还原性,‎加热或在溶‎液中易氧化‎分解,在碱‎性条件下更‎易被氧化。

‎构成‎:一个维生‎素分子由六‎个碳原子、‎八个氢原子‎和六个氧原‎子构成。

小C、中C、大C

小C、中C、大C

C型臂简介C型臂:顾名思义该设备有C型的机架,产生X射线的球管,采集图像的影像增强器和CCD摄像机,以及图像处理的工作站组成。

主要用于各种手术中的透视造影,点片等工作。

另外也区别与其他的x射线设备比如:U型臂,G形臂等等。

C型臂俗称:C型臂X光机、C臂、小C臂、小C、C臂机、C臂X光机等。

C型臂用途骨科:整骨、复位、打钉、椎间盘造影和消融、经皮穿刺等。

疼痛科:与臭氧、半导体激光、射频机配合开展腰椎、颈椎等疼痛介入治疗。

肿瘤科:多部位肿瘤介入整治。

妇科:输卵管导引术、子宫造影、子宫肌瘤介入治疗等。

普外科:创伤外科、取体内异物。

泌尿外科:肾膀胱造影,泌尿外科手术等。

控制方式主要包括:手持控制器控制、双脚闸控制器控制、自动透视、手动透视、脉冲透视等控制方式。

射线防护1.利用脚闸远距离曝光,距离防护。

2.利用限速器,及球管内部的铅皮,防止了散射线。

3.利用脉冲透视缩短曝光时间,从而降低了病人的吃线剂量。

C型臂分类小C: (C臂、小C臂、小C、骨科C臂)主要用途1、骨科:整骨、复位、打钉。

2、外科:取体内异物、心导管、植入起搏器、部分介入治疗、部分造影术及局部摄影等工作。

3、其他:配合臭氧机治疗疼痛,小针刀治疗,妇科输卵管导引手术等。

该型产品在医院普及率很高,基本上二级医院都已经装备。

中C(周边介入型C形臂)定义:周边介入型C形臂,在业界俗称为“中C”,不仅仅是把球管功率提高,就可以谓为“中C”。

中C产品设计的系统性和操控性是开展复杂介入手术的有力保障,主要是增加了DSA相关的许多功能。

它在临床上可以完成大型血管机(大C)80%以上手术需求。

主要的临床范围:神经外科血管造影,减影术消化道介入手术,例如:ERCP、食道支架;腹腔和盆腔脏器肿瘤介入治疗,例如肝脏、肾脏介入手术;四肢血管造影剂减影术,成型术疼痛微创介入手术,例如:腰椎间盘介入、颈椎介入、妇科输卵管再造手术、子宫肌瘤手术。

大C(DSA血管机)DSA是由电子计算机进行影像处理的先进的X线诊断技术,是继CT之后,在X线诊断技术方面的又一重大突破,主要应用于全身血管疾病的诊断和治疗。

c结尾的单词

c结尾的单词

437个以C为结尾的英文单词以下为以C为结尾的单词,共437个(后附单词及例句)——adj. 水生的,水中的1、music 音乐例句:His first music teacher was a major influence in his life.他的第一位音乐老师是他一生中对他影响非常大的人。

Every week they get together to make music.每个星期他们都聚在一起唱歌奏乐。

2、romantic 浪漫的例句:I'm not interested in a romantic relationship.我对谈情说爱不感兴趣。

This season's look is soft and romantic.这段时间的流行风格是柔和、浪漫。

3、charismatic 有魅力的例句:Like all truly charismatic people, he can work his magic on both men and women.像所有真正富有魅力的人一样,他让男人和女人都很着迷。

He's unsympathetic, but charismatic and complex.他很讨人厌,但很有感召力,令人捉摸不透。

4、civic 城市的;公民的Civic education can only build up active and modern civic education.公民教育只能是造就积极的现代公民的教育。

We must carry out the Program for lmproving Civic Morality.认真贯彻公民道德建设实施纲要。

Second, about the includes civic education and extension.其次,公民教育的内含和外延。

5、picnic 野餐;愉快的时间We stopped for a picnic en route.我们在途中停下来野餐。

C-SPOC

C-SPOC

一、C-SPOC介绍为方便管理集群中的操作,HACMP 提供了一种方法,通过该方法可以在多个集群节点执行命令并维护要执行操作之间的协调。

一些集群维护操作可能影响HACMP 配置(拓扑和资源),但通过HACMP 系统管理工具(C-SPOC),无需停止关键作业即可执行这些任务(如添加或删除资源、用户和更改拓扑元素)。

注意:C-SPOC 使用一种新的集群通信守护进程(clcomdES) 在远程节点上执行命令。

如果此守护进程没有运行或者无法验证来自发起者节点的请求,将不会执行远程节点上的命令,因此C-SPOC 操作将会失败。

使用C-SPOC 实用工具,在一个节点(发起更改的节点)上执行的命令也会在其他集群节点上执行。

C-SPOC 最大限度地减少了管理开销,并降低了节点状态不一致的可能性以下我们将利用C-SPOC功能来在线添加PV及扩展FS。

二、创建PV1、创建PV用命令Cfgmgr –v及/usr/DynamicLinkManager/bin/dlmcfgmgr配置LUN;其中dlmfdrvX就是HDLM封装的为设备# lspvhdisk0 000345a76cc6fc03 rootvg activehdisk1 000345a72fc97c3c rootvg activehdisk2 none Nonehdisk3 none Nonedlmfdrv0 000344b9f4ebfc92 hbvg concurrentdlmfdrv1 000344b9f4ee1d74 dominovg activehdisk8 none Nonehdisk9 none Nonedlmfdrv2 none Nonehdisk6 none Nonehdisk7 none None在两个节点分别创建PV# chdev -l dlmfdrv2 -a pv=yesdlmfdrv2 已更改2、检查PVIDNode 1# lspvhdisk0 000345a76cc6fc03 rootvg activehdisk1 000345a72fc97c3c rootvg activehdisk2 none Nonehdisk3 none Nonedlmfdrv0 000344b9f4ebfc92 hbvg concurrentdlmfdrv1 000344b9f4ee1d74 dominovg active hdisk6 none Nonehdisk7 none Nonehdisk10 none Nonehdisk11 none Nonedlmfdrv2 000345a70c2be00e NoneNode 2# lspvhdisk0 000344b96ca1ba08 rootvg active hdisk1 000344b930963e28 rootvg active hdisk2 none Nonehdisk3 none Nonedlmfdrv0 000344b9f4ebfc92 hbvg concurrent dlmfdrv1 000344b9f4ee1d74 dominovghdisk6 none Nonehdisk7 none Nonehdisk8 none Nonehdisk9 none Nonedlmfdrv2 000345a70c2be00e None输出显示两个节点的PVID已经生成。

c字母开头的单词

c字母开头的单词

c字母开头的单词
C字母开头的单词有很多,比如:cat(猫)、camel(骆驼)、car(汽车)、cow(牛)、cake(蛋糕)、city(城市)、cloud(云)、cup(杯子)、computer(电脑)、clock (钟)、cry(哭)、candy(糖果)等等。

C字母开头的单词不仅有动物,还有交通工具、食物、家具、用具等等,它们的出现让我
们的生活更加丰富多彩。

比如说,car不仅可以让我们出行更加便捷,还可以带来快乐的
旅行体验;computer让我们的工作效率更高,也可以为我们提供更多的娱乐方式;cake是一种美味可口的食物,也可以成为欢庆的象征。

C字母开头的单词丰富了我们的生活,让我们的生活更加精彩。

维生素C含量的测定(高效液相色谱法)

维生素C含量的测定(高效液相色谱法)

维生素C含量的测定(高效液相色谱法)1.原理试样中的抗坏血酸用溶解超声提取后,以离子对试剂为流淌相,经反相色谱柱分别,其中L(+)-抗坏血酸和D(+)-抗坏血酸挺直用配有紫外检测器的液相色谱仪(波长245nm)测定;试样中的L(+)-脱氢抗坏血酸经L-半胱氨酸溶液举行还原后,用紫外检测器(波长245nm)测定L(+)-抗坏血酸总量,或减去原样品中测得的L(+)-抗坏血酸含量而获得L(+)-脱氢抗坏血酸的含量。

以色谱峰的保留时光定性,外标法定量。

2.试剂与设备 (1)试剂偏磷酸(HPO3)n:含量(以HPO3计)≥38% ,(Na3PO4·12H2O),(KH2PO4) ,(H3PO4) ; 85%, (C3H7NO2S):优级纯,(C19H42BrN):色谱纯,(CH3OH):色谱纯。

(2)试剂配制偏磷酸溶液(200g/L):称取2008(精确至0.1g)偏磷酸,溶于水并稀释至1L,此溶液于4℃的环境下可保存一个月;偏磷酸溶液(20g/L):量取50mL 200g/L偏磷酸溶液,用水稀释至500mL; 溶液(100g/L):称取100g(精确至0.1g),溶于水并稀释至1L, 溶液(40g/L):称取4g ,溶于水并稀释至100mL,临用时配制。

(3)标准品L(+)-抗坏血酸标准品(C6H8O6):纯度≥99%, D(+)-抗坏血酸(异抗坏血酸)标准品(C6H8O6):纯度≥99%。

(4)标准溶液配制L(+)-抗坏血酸标准贮备溶液(1.000mg/mL):精确称取L(+)-抗坏血酸标准品0.0lg(精确至0.01mg),用20g/L的偏磷酸溶液定容至10mL。

该贮备液在2~8℃避光条件下可保存一周。

D(+)-抗坏血酸标准贮备溶液(1.000mg/mL ):精确称取D(+)-抗坏血酸标准品0.01g(精确至0.01mg),用20g/L的偏磷酸溶液定容至10mL。

该贮备液在2~8℃避光条件下可保存一周。

c的原子相对原子质量

c的原子相对原子质量

c的原子相对原子质量C的原子相对原子质量C是化学元素周期表中的第6个元素,其原子序数为6,原子量为12.01。

在化学中,原子相对原子质量是指一个元素的原子质量与碳-12同位素的原子质量之比。

因此,C的原子相对原子质量为12.01。

物理类原子相对原子质量是一个物理量,它是由原子的质量和质子数决定的。

在C的原子中,有6个质子和6个中子,因此其质量为12。

但是,由于同位素的存在,C的原子相对原子质量并不等于12。

同位素是指原子核中质子数相同,但中子数不同的原子。

C的同位素有两种,分别是碳-12和碳-13。

碳-12的原子质量为12,而碳-13的原子质量为13.003。

化学类C是化学中非常重要的元素之一,它在有机化学和生物化学中都有广泛的应用。

在有机化学中,C是构成有机物的基本元素之一。

有机物是指含有C和H元素的化合物,如烷烃、烯烃、芳香烃等。

在生物化学中,C是构成生命体的基本元素之一。

生命体中的有机物包括蛋白质、核酸、多糖等,它们都含有C元素。

历史类C的原子相对原子质量的确定是一个历史悠久的过程。

早在18世纪,化学家就开始研究元素的相对原子质量。

当时,他们使用化学反应的质量变化来确定元素的相对原子质量。

但是,这种方法存在很大的误差,因为化学反应的质量变化受到很多因素的影响。

直到20世纪初,科学家才开始使用质谱仪来测量元素的原子质量,从而确定元素的相对原子质量。

质谱仪是一种能够测量原子和分子的质量的仪器,它通过将原子或分子加速到高速后,利用磁场将它们分离出来,从而测量它们的质量。

总结C的原子相对原子质量是一个重要的物理量,它是由原子的质量和质子数决定的。

在化学中,C是一个非常重要的元素,它在有机化学和生物化学中都有广泛的应用。

C的原子相对原子质量的确定是一个历史悠久的过程,科学家们通过不断的研究和探索,最终确定了C的原子相对原子质量为12.01。

c的摩尔质量

c的摩尔质量

c的摩尔质量
碳(C)的摩尔质量是12.0107 g/mol,它是最常见的元素之一。

碳在宇宙中普遍存在,它可以以多种形式出现,包括碳的游离形式以及组成组分的碳分子。

原子质量的最小单位是一个原子,这些原子中的碳组成的质量就是碳的摩尔质量。

碳有很多出现形式,其中最常见的形式是最简单的碳分子,它精确地由六个碳原子组成,因此碳的摩尔质量是12.0107 g/mol。

虽然碳可以以多种形式存在,但它只有一种质量,所以它的摩尔质量一致。

碳在生物有机分子中占主导地位,它也可以用于建造具有复杂结构的分子和物质。

而这些物质又可以再经过一定的处理生产出从社会需求的各种各样的产品,比如塑料用品,织物,燃料等等。

碳的摩尔质量因此非常重要,它不仅可以用于确定碳分子的质量,还可以用于确定原料的质量,从而确定最终产品的质量和性能。

碳是宇宙中最常见的元素,它的摩尔质量是12.0107 g/mol,这个数字将持续影响着我们日常生活中的许多元素及其质量。

因此,要正确衡量和控制碳及碳构成物的质量,碳的摩尔质量仍然具有重要的意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在网上搜了很久关于腾讯的接口, 但资料很有限, 绝大部分都是重复的, 由于想实现一些比较好玩的应用, 我只好根据手头能搜到的资料进行实现了. 现在可以实现QQ登陆, 发消息, 接受消息, 加好友, 查询好友资料, 更改QQ状态, 查询已添加的好友(只能按QQ号排序, 获取到前120名名单, 原因不明), 查看某QQ用户个人资料等功能, 可以给有兴趣的同学们参考一下. 也请有这方面经验的前辈们补充补充你们知道的其它功能:) 原理是向腾讯:8000进行POST一个UTF8编码的Byte[], 这个数组是根据各个功能的协议进行编码的, 成功后返回一个UTF8编码的Byte[]数组, 因此我把这个方法抽取出来: private void UploadData(){try{pageData = _client.UploadData("http://tqq.te :8000", "POST", byteArray);}catch { }}类中定义的变量:public string num; //构造函数的QQ号码private string pwd; //构造函数的QQ密码public string[] online_Face={""}; //在线的头像号码public string[] online_Station={""}; //在线的状态public string[] online_Number={""}; //在线的号码public string[] online_NameK={""}; //在线的昵称private WebClient _client = new WebClient(); //用来给服务器发送消息的private string postValues; //发送给服务器的字符串private byte[] byteArray; //把要发送的字符串变成字符数组private byte[] pageData; //接受服务器返回的字符数组private string s; //把返回的字符数组变成字符串public string[] MT; //储存信息类型public string[] UN; //储存信息来源号码public string[] MG; //储存信息内容public bool is_RightLogin; //判断当前用户是否正确登录构造一个QQ类实例的构造函数:///<summary>/// QQ类的构造函数///</summary>///<param name="QQ_Num">QQ号码</param>///<param name="QQ_Pwd">QQ密码</param>public QQ (string QQ_Num, string QQ_Pwd){this.num = QQ_Num;this.pwd = QQ_Pwd;}实现QQ登陆的功能:协议: VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5=1&LC=9326B87B234E7235 解释: VER是用来说明QQ协议的版本,CMD是说明协议的命令,Login就是指QQ的登录了, SEQ是他的为了防止重复发送而设定的一个标记,可以取时间得毫秒值, 一个随机数也可以, UIN是说明你当前要登录的用户QQ号, PS是MD5加密过后的密码的值.///<summary>///登陆QQ///</summary>///<returns>登陆成功就返回True</returns>public bool QQ_Login(){postValues = "VER=1.1&CMD=Login&SEQ=" + DateTime.Now.Ticks.ToString().Substring(7, 7)+ "&UIN=" + num + "&PS=" + MD5(pwd) + " &M 5=1&LC=9326B87B234E7235";byteArray = System.Text.Encoding.UTF8.GetByt es(postValues);//向服务器POST数据UploadData();if (Encoding.UTF8.GetString(pageData).Contai ns("RES=0&RS=0")){is_RightLogin = true;return true;}elsereturn false;}QQ的MD5加密方法:public static string MD5(string toCryString){MD5CryptoServiceProvider hashmd5; //using Syst em.Security.Cryptography安全.密码系统hashmd5 = new MD5CryptoServiceProvider();return BitConverter.ToString(puteHas h(Encoding.UTF8.GetBytes(toCryString))).Replace("-", "").ToLower();}QQ登陆的返回协议:VER=1.1&CMD=Login&SEQ=&UIN=&RES=0&RS=0&HI=60&LI=300(这是登陆成功的一个例子)解释: RES为0表示成功返回,RS为0表示登录成功,VER=1.1&CMD=Login&SEQ=&UIN=&RES=0&RS=1&RA=登录失败RS为1表示登录失败,那么就会出现提示信息RA说明原因.获取QQ好友列表:协议: VER=1.1&CMD=List&SEQ=&UIN=&TN=160&UN=0///<summary>///获取QQ好友列表///</summary>///<returns>返回一个字符串数组,数组最后一个元素是空格</r eturns>public string[] QQ_List(){postValues = "VER=1.1&CMD=List&SEQ=" + DateTime. Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + "&T N=160&UN=0";byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (!s.Contains("&RES=0"))is_RightLogin = false;string s2 = s.Remove(0, s.IndexOf("&UN=")+4);string[] QQ_Friend_List = s.Split(',');return QQ_Friend_List;}返回协议: VER=1.1&CMD=LIST&SEQ=&UIN=&RES=0&FN=1&SN=&UN=解释: UN后面则是您好友的QQ号码,每个号码都由,进行分开, 我用string.Split(',')把值放入字符串数组中返回了.更新目前在线online_四个字符串数组中好友信息的值: 协议: VER=1.1&CMD=Query_Stat&SEQ=&UIN=&TN=50&UN=0解释: 获得QQ好友在线名单跟获得好友名单差不多,不同的是用的命令不同用的是Query_Stat///<summary>///更新QQ类中目前在线online_四个字符串数组的值///</summary>public void QQ_Query_Stat(){postValues = "VER=1.1&CMD=Query_Stat&SEQ=" + DateTime.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + "&TN=50&UN=0";byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (!s.Contains("&RES=0"))is_RightLogin = false;StringBuilder sb = new StringBuilder(s);sb.Remove(s.IndexOf("&FN="), s.Length - s.IndexO f("&FN="));sb.Remove(0,s.IndexOf("&FC=")+4);online_Face = sb.ToString().Split(',');sb = new StringBuilder(s);sb.Remove(s.IndexOf("&UN="), s.Length - s.IndexO f("&UN="));sb.Remove(0, s.IndexOf("&ST=") + 4);online_Station = sb.ToString().Split(',');sb = new StringBuilder(s);sb.Remove(s.IndexOf("&NK="), s.Length - s.IndexO f("&NK="));sb.Remove(0, s.IndexOf("&UN=") + 4);online_Number = sb.ToString().Split(',');string ss = s.Remove(0, s.IndexOf("&NK=") + 4); online_NameK = ss.Split(',');}返回协议:VER=1.1&CMD=QUERY_STAT&SEQ=9118265&UIN=634882287&RES=0&FC=12,&FN =1&SN=1&ST=10,&UN=635478153,&NK=,解释: FC为QQ头像的的ID,如的头像ID为270,那么其头使用的图片为91.bmp,其算法为ID/3+1, ST为QQ用户的状态,10为上线,20为离线,30为忙碌, UN为在线用户的QQ号,NK为在线用户的QQ昵称.ST,UN,NK,每个逗号隔开的数据相互对应.输入一个QQ号,查询这个QQ号用户的信息:协议: VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=2&UN=解释: UN为要查看用户信息的QQ号.///<summary>///输入一个QQ号,查询这个QQ号用户的信息///</summary>///<param name="search_num">输入一个QQ号,查询该QQ信息</param>///<returns>字符串数组(联系地址,用户年龄,用户邮箱,头像,个人网站,职业,邮箱,联系电话,简介,省份,真实姓名,毕业院校,性别,QQ号,昵称)</returns>public string[] QQ_GetInfo(string search_num){postValues = "VER=1.1&CMD=GetInfo&SEQ=" + DateTi me.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + "&LV=2&UN=" + search_num;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (!s.Contains("&RES=0"))is_RightLogin = false;MatchCollection matches = Regex.Matches(s, "&([^ =][^=])=([^&]*)");List<string> Info = new List<string>();for (int i = 0; i < matches.Count; i++)Info.Add(matches[i].Groups[2].ToString()); Info.RemoveAt(6); //去除LV=多少, 这表示查询方式,默然就是普通查询if (Info[12].ToString() == "0")Info[12] = "男";elseInfo[12] = "女";string[] Inf = Info.ToArray();return Inf;}返回协议:VER=1.1&CMD=GETINFO&SEQ=41707&UIN=&RES=0&AD=&AG=&EM=&FC=&HP= &JB=&LV=&PC=&PH=&PR=PV=&RN=&SC=&SX=&UN=&NK=解释: AD用户的联系地址, AG为用户年龄, EM为用户MAIL, FC为用户头像, HP为用户网站, JB为用户职业, PC为用户邮编, PH为用户联系电话, PR为用户简介, PV为用户所以的省, RN为用户真实名称, SC为用户毕业院校, SX为用户性别, UN为用户QQ号, NK为用户QQ昵称添加好友功能:协议: VER=1.1&CMD=AddToList&SEQ=&UIN=&UN=解释: UN为我们要增加用户的QQ号///<summary>///添加好友功能///</summary>///<param name="fir_num">输入一个QQ号,请求加为好友</p aram>///<returns>0表示已经加为好友,1表示需要验证请求,2表示拒绝</returns>public string AddToList(string fir_num){postValues = "VER=1.1&CMD=AddToList&SEQ=" + Date Time.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + "&UN=" + fir_num;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (!s.Contains("&RES=0"))is_RightLogin = false;MatchCollection matchs = Regex.Matches(s,"&CD=(.) ");return matchs[0].Groups[1].ToString();}返回协议: VER=1.1&CMD=AddToList&SEQ=&UIN=&RES=0&CD=0&UN=解释: CD为被加QQ的身份验证状态,CD为0表示"允许任何人把我列为好友"CD为1表示"需要身份证认才能把我列为好友",CD为2表示"不允许任何人把我列为好友"如果CD为0那么信息回馈后,用户就直接加为好友了,如果CD为1,那么还要发送一次回应加为好友的响应回应添加好友的请求:协议: VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=解释: CD为响应状态, CD为0表示"通过验证", CD为1表示"拒决加为对方为好友"///<summary>///回应加为好友的响应///</summary>///<param name="fri_Num">请求的QQ号码</param>///<param name="agree_Type">0表示通过验证,1表示拒绝对方,2表示请求加对方为好友</param>public void Ack_AddToList(string fri_Num,string agr ee_Type){//WebClient _client = new WebClient();postValues = "VER=1.1&CMD=Ack_AddToList&SEQ=" + DateTime.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + "&UN=" + fri_Num + "&CD="+agree_Type+"&RS=";byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s=Encoding.UTF8.GetString(pageData);if (!s.Contains("&RES=0"))is_RightLogin = false;}成功操作后返回协议: VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&RES=0&删除好友:协议: VER=1.1&CMD=DelFromList&SEQ=&UIN=&UN=解释: UN为你要删除的QQ号///<summary>///删除好友,成功返回True///</summary>///<param name="del_num">输入一个QQ号,删除这个QQ好友< /param>///<returns></returns>public bool DelFromList(string del_num){postValues = "VER=1.1&CMD=DelFromList&SEQ=" + Da teTime.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + nu m + "&UN=" + del_num;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (s.Contains("&RES=0"))return true;elsereturn false;}操作成功返回协议: VER=1.1&CMD=DelFromList&SEQ=&UIN=&RES=0&改变QQ当前状态(在线,离线,忙碌):协议: VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST=解释: ST为要改变的状态,10为上线,20为离线,30为忙碌.public bool Change_Stat(string stat){postValues = "VER=1.1&CMD=Change_Stat&SEQ=" + Da teTime.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + nu m + "&ST=" + stat;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if(s.Contains("&RES=0"))return true;elsereturn false;}成功操作后返回协议: VER=1.1&CMD=Change_Stat&SEQ=&UIN=&RES=0&给QQ好友发送消息:协议: VER=1.1&CMD=CLTMSG&SEQ=&UIN=&UN=&MG=解释: UN是你的QQ好友, MG就是消息内容///<summary>///向一个QQ号码发送消息///</summary>///<param name="msgTo">输入一个QQ号,向他发送消息</par am>///<param name="msg">输入消息内容</param>///<returns>成功返回True</returns>public bool QQ_SendMsg(string msgTo, string msg){postValues = "VER=1.2&CMD=CLTMSG&SEQ=" + DateTim e.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num + " &UN=" + msgTo + "&MG=" + msg;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (s.Contains("&RES=20")){is_RightLogin = false;return false;}if (s.Contains("&RES=0"))return true;elsereturn false;}返回协议: VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=0&(成功发送,对方不一定能收到哦)VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=3(发送过快) VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)解释: 1. 当你发消息时,以下情形对方可能看不到(其实是收到了,QQ不提示)你发送的消息:你俩互为陌生人,且对方没有和你说过话你在他的陌生人列表里,并且他没有和你说过话(没有验证)2. 当你过快发送消息时,系统会给你一个惩罚,RES=3,相应时间20s接收QQ消息:协议: VER=1.1&CMD=GetMsgEx&SEQ=&UIN=解释: 这个不需要解释了, 看懂前面的协议, 这个肯定能看懂的, 呵呵public void GetMsgEx(){postValues = "VER=1.1&CMD=GetMsgEx&SEQ=" + DateT ime.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num; byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (s.Contains("\r"))s = s.Replace("\r", "\n");if (s.Contains("&RES=0")){is_RightLogin = true;MatchCollection matches = Regex.Matches(s, "& MN=([^&]*)");if (matches[0].Groups[1].ToString() != "0") / /判断返回的信息数量是否为0条{matches = Regex.Matches(s, "&MT=([^&]*)&U N=([^&]*)&MG=([^&]*)");MT = matches[0].Groups[1].ToString().Spli t(','); //信息类型UN = matches[0].Groups[2].ToString().Spli t(','); //信息来源号码s = s.Remove(0, s.IndexOf("&MG=") + 4); MG = s.Split(','); //信息内容//将消息内容进行转码for(int i = 0; i<MG.Length-1;i++){MG[i] = MG[i].Replace("%25", "%");MG[i] = MG[i].Replace("%26", "&");MG[i] = MG[i].Replace("%2c", ",");}}else{MT = null;UN = null;MG = null;is_RightLogin = false;}}返回协议:VER=1.1&CMD=GETMSGEX&SEQ=&UIN=&RES=0&MN=&MT=,&UN=,&MG=,(正确返回的)VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0&MN=0&MT=&UN=&MG=(表示没有信息)VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)解释: 关于MT:9为用户消息,99为系统消息,2为请求信息,3为通过验证,4为拒绝被加好友当MT=2时,MG为对方请求你验证的信息当MT=3时,表示对方通过你的验证当MT=4时,MG为对方拒绝你理由关于MG:当MT=9时,MG为用户发送的消息内容当MT=99时,MG=10(QQ_STATUS_ONLINE)表示对方上线MG=20(QQ_STATUS_OFFLINE)表示对方下线MG=30(QQ_STATUS_BUSY)表示对方进入忙碌状态退出QQ:协议: VER=1.1&CMD=Logout&SEQ=&UIN=解释: 这个也不解释, 非常简单///<summary>/// QQ退出登陆,并改变is_RightLogin为False///</summary>public void QQ_Logout(){postValues = "VER=1.1&CMD=Logout&SEQ=" + DateTim e.Now.Ticks.ToString().Substring(7, 7) + "&UIN=" + num;byteArray = System.Text.Encoding.UTF8.GetBytes(p ostValues);//向服务器POST数据UploadData();s = Encoding.UTF8.GetString(pageData);if (s.Contains("&RES=0"))is_RightLogin = false;}成功返回协议: VER=1.1&CMD=LOGOUT&SEQ=&UIN=&RES=0结尾这些功能研究了两三天, 代码写的不好的地方请各位大牛们指点指点. 本篇最主要的目的还是抛砖引玉, 希望关于QQ其它一些有意思的功能, 自己可以实现的, 欢迎各位高手前辈补充补充:)点击下载: 点击下载地址:/browse.aspx/.Public/Contact?uc=1转载请注明: /technology/ Create Chen。

相关文档
最新文档