JML

net.sf.jqql.packets.in._05
Class TransferReplyPacket

java.lang.Object
  extended by net.sf.jqql.packets.Packet
      extended by net.sf.jqql.packets.InPacket
          extended by net.sf.jqql.packets._05InPacket
              extended by net.sf.jqql.packets.in._05.TransferReplyPacket

public class TransferReplyPacket
extends _05InPacket

 repy packet for sending packet. This packet may not be reply packet, maybe is sent by server proactive.
    It's necessary to check source. If source is QQ_CLIENT,  it's a reply packet.
 1. head
 2. unknown 8 byte, same as request packet
 3. session id, the value is different from the current session id. I don't know how to use it.
 4. unknown 4 byte, same as request packet
 5. length of content behind, excludes packet tail, 2 byte
 6. unknown content
 7. tail

 传送包的回复包,这个包不一定是回复包,也可能是服务器主动发出,需要判断source
 如果source是QQ_CLIENT,则这个是回复包
 1. 头部
 2. 未知的8字节,和请求包一致
 3. session id,但是这个值和本次会话的id已经不同,不知有何用处
 4. 未知的4字节,和请求包一致
 5. 后面内容的长度,不包括包尾,2字节
 6. 未知内容
 7. 尾部
 
 If the source is not QQ_CLIENT, it's sent proactive by server 
 different sequence,  and content of packet different too. file basic nfo use sequence 0x0000, file data use 0x0001
 when sequence is 0x0000, format is :
 1. head
 2. unknown 8 byte
 3.  session id, 4 byte
 4. unknown 4 byte
 5. length of content behind, 2 byte
 6. unknown 2 byte
 7. photo's md5, 16 byte
 8. photo file name's md5, 16 byte
 9. photo file length, 4 byte
 10. file name length
 11. file name
 12. unknown 8 byte
 13. tail

 如果source不是QQ_CLIENT,则是服务器主动发出的包
 不同的序号,包的内容也不同,文件基本信息使用序号0x0000,文件数据使用序号0x0001
 当序号是0x0000时,格式如下
 1. 头部
 2. 未知的8字节
 3. session id, 4字节
 4. 未知的4字节
 5. 后面的内容长度,2字节
 6. 未知的2字节
 7. 图片的md5,16字节
 8. 图片文件名的md5,16字节
 9. 图片文件长度,4字节
 10. 文件名长度
 11. 文件名
 12. 未知的8字节
 13. 尾部
 
 when the sequence is 0x0001, format:
 1. head
 2. unknown 8 byte
 3. session id, 4 byte
 4. unknown 4 byte
 5. data fragment length
 6. data content
 7. tail

 当序号为0x0001时,格式如下
 1. 头部
 2. 未知的8字节
 3. session id, 4字节
 4. 未知的4字节
 5. 数据分片长度
 6. 数据内容
 7. 尾部
 

Author:
luma

Field Summary
 byte[] data
           
 String fileName
           
 byte[] fileNameMd5
           
 int imageLength
           
 byte[] md5
           
 int sessionId
           
 
Fields inherited from class net.sf.jqql.packets.Packet
bodyBuf, bodyDecrypted, command, crypter, ds, duplicated, header, log, sequence, source, user
 
Constructor Summary
TransferReplyPacket(ByteBuffer buf, int length, QQUser user)
           
 
Method Summary
protected  int getCryptographStart()
           
 String getPacketName()
           
protected  void parseBody(ByteBuffer buf)
          parse packet body, from begin position of buf 解析包体,从buf的开头位置解析起
 
Methods inherited from class net.sf.jqql.packets._05InPacket
decryptBody, encryptBody, getBodyBytes, getFamily, getHeadLength, getLength, getQqNum, getTailLength, parseHeader, parseTail, putBody, putHead, putTail, setQqNum, toString
 
Methods inherited from class net.sf.jqql.packets.InPacket
validateHeader
 
Methods inherited from class net.sf.jqql.packets.Packet
dump, equals, getCommand, getHeader, getSequence, getSource, hash, hashCode, isDuplicated, setDuplicated, setHeader, setSequence
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

sessionId

public int sessionId

md5

public byte[] md5

fileNameMd5

public byte[] fileNameMd5

fileName

public String fileName

imageLength

public int imageLength

data

public byte[] data
Constructor Detail

TransferReplyPacket

public TransferReplyPacket(ByteBuffer buf,
                           int length,
                           QQUser user)
                    throws PacketParseException
Parameters:
buf -
length -
user -
Throws:
PacketParseException
Method Detail

getPacketName

public String getPacketName()
Overrides:
getPacketName in class _05InPacket
Returns:
descriptive name of packet 包的描述性名称

getCryptographStart

protected int getCryptographStart()
Specified by:
getCryptographStart in class Packet
Returns:
start position of cryptograph, relative to the first byte of packet body. if this packet is unknown packet, return -1, this method only available to some protocol family. 密文的起始位置,这个位置是相对于包体的第一个字节来说的,如果这个包是未知包, 返回-1,这个方法只对某些协议族有意义

parseBody

protected void parseBody(ByteBuffer buf)
                  throws PacketParseException
Description copied from class: Packet
parse packet body, from begin position of buf 解析包体,从buf的开头位置解析起

Specified by:
parseBody in class Packet
Parameters:
buf - ByteBuffer
Throws:
PacketParseException - if parse error 如果解析出错

JML