也不知道大家用过没有用过 www.imtata.com这个软件
我觉得他应该对qq进行了二次开发!
现在请教高手如何获得qq程序向服务器发送的数据包内容!或是接受到的数据包内容!
最好是c# 给点思路也行!

解决方案 »

  1.   

    大多数都是用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=
    具体的操作可以去网络上查.别的我也不知道了,我也只是收集到这些资料.
      

  2.   

    对QQ二次开发的难度较大, 我们也在试着做这块儿, 但是进度比较困难, Wireshark并不能很好的抓到QQ的协议包, 如果需要二次开发, 目前比较推荐用HOOK覆盖QQ.协议解析和使用难度较大.
      

  3.   

    linix平台上,好象有个java的开源项目,楼主可以到www.cnblogs.com找一下,里面有人提过。
    java语法与c#相近,改动是非常可能的。
      

  4.   

    客户端: 
    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;
      

  5.   

       Socket   soc   =   listener.AcceptSocket();     //如果有连接请求,则同意此连接,并且返回该连接 红字是全局的。