qq二次编程高手请进 也不知道大家用过没有用过 www.imtata.com这个软件我觉得他应该对qq进行了二次开发!现在请教高手如何获得qq程序向服务器发送的数据包内容!或是接受到的数据包内容!最好是c# 给点思路也行! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大多数都是用QQ的wap协议,具体协议是-基于HTTP的QQ协议V1.1 虽然已经有了基于QQ协议所写成的第三方软件 foicq, qq plugins for gaim, LumaQQ,但是由于他们是基于二进制Stream的协议过于复杂,大家阅读代码也有一定的难度.HTTP的服务器应该是:http://tqq.tencent.com:8000,它是一个通过8000口进行通讯的服务器.C#: C#里System.IO(很多人都写成web)空间下提供了一个叫做WebClient的对象,使用此对象就可以使C#直接对服务器发送WEB客户端的请求。那么我们要对服务器提交POST方法那么就必须使用其UploadData()方法才行。首先把要请求的信息先转换为字节(因为POST提交的是字符的流数据),然后再做为UploadData()的参数。使用UploadData()进行数据提交,最后返回,POST的回馈信息。如下: WebClient _client = new WebClient(); string postValues = "VER=1.0&CMD=Query_Stat&SEQ=12321&UIN=29501213&TN=50&UN=0"; Byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postValues); Byte[] pageData = _client.UploadData(Host,"POST",byteArray);发送命令:VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=具体的操作可以去网络上查.别的我也不知道了,我也只是收集到这些资料. 对QQ二次开发的难度较大, 我们也在试着做这块儿, 但是进度比较困难, Wireshark并不能很好的抓到QQ的协议包, 如果需要二次开发, 目前比较推荐用HOOK覆盖QQ.协议解析和使用难度较大. linix平台上,好象有个java的开源项目,楼主可以到www.cnblogs.com找一下,里面有人提过。java语法与c#相近,改动是非常可能的。 客户端: WebClient client = new TcpClient(计算机名,端口 ); NetworkStream ns=client.GetStream(); byte[] byt=Encoding.UTF8.GetBytes(数据); ns.Write(byt,0,byt.Length);//写入ns.Flush();服务器端: TcpListener listener = new TcpListener(IPAddress.Any, 6000); listener.Start(); //开始侦听 Socket soc = listener.AcceptSocket(); //如果有连接请求,则同意此连接,并且返回该连接 Socket soc=this.soc; //获得连接 byte[] byt=new byte[1024]; //大小必须足够大。否则将被截断。 int count=soc.Receive(byt,0,byt.Length,SocketFlags.None); Encoding.UTF8.GetString(byt,0,count);//获得用到命名空间:using System.Net;using System.Net.Sockets; Socket soc = listener.AcceptSocket(); //如果有连接请求,则同意此连接,并且返回该连接 红字是全局的。 如何在pictureBox中获取画出来的对象! BHO失效了,找不到原因,求救! socket 的udp协议问题 Access查询效率问题 在线~~50分求c#网络编程教材 关于读取,修改,保存 word文档 急急急,问webservice使用 C#问题:什么时候用class,什么时候用struct??? 100分简单问题马上给分(投票问题) 请问,Esc这个功能怎么实现哈... 类或结构长度问题 sql数据库查询问题 c#
虽然已经有了基于QQ协议所写成的第三方软件 foicq, qq plugins for gaim, LumaQQ,但是由于他们是基于二进制Stream的协议过于复杂,大家阅读代码也有一定的难度.
HTTP的服务器应该是:http://tqq.tencent.com:8000,它是一个通过8000口进行通讯的服务器.
C#:
C#里System.IO(很多人都写成web)空间下提供了一个叫做WebClient的对象,使用此对象就可以使C#直接对服务器发送WEB客户端的请求。那么我们要对服务器提交POST方法那么就必须使用其UploadData()方法才行。首先把要请求的信息先转换为字节(因为POST提交的是字符的流数据),然后再做为UploadData()的参数。使用UploadData()进行数据提交,最后返回,POST的回馈信息。如下:
WebClient _client = new WebClient();
string postValues = "VER=1.0&CMD=Query_Stat&SEQ=12321&UIN=29501213&TN=50&UN=0";
Byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postValues);
Byte[] pageData = _client.UploadData(Host,"POST",byteArray);
发送命令:
VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=
具体的操作可以去网络上查.别的我也不知道了,我也只是收集到这些资料.
java语法与c#相近,改动是非常可能的。
WebClient client = new TcpClient(计算机名,端口 );
NetworkStream ns=client.GetStream();
byte[] byt=Encoding.UTF8.GetBytes(数据);
ns.Write(byt,0,byt.Length);//写入
ns.Flush();
服务器端: TcpListener listener = new TcpListener(IPAddress.Any, 6000);
listener.Start(); //开始侦听
Socket soc = listener.AcceptSocket(); //如果有连接请求,则同意此连接,并且返回该连接
Socket soc=this.soc; //获得连接
byte[] byt=new byte[1024]; //大小必须足够大。否则将被截断。
int count=soc.Receive(byt,0,byt.Length,SocketFlags.None);
Encoding.UTF8.GetString(byt,0,count);//获得
用到命名空间:
using System.Net;
using System.Net.Sockets;