|
JML | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.jqql.obsolete.FilePacket
net.sf.jqql.obsolete.FileDataPacket
public class FileDataPacket
file operation info packet, this packet take some basic info of file, format is: 1. head 2. unknown byte, 0x00 3. 2 byte operation type, format behind is: 1. when operate type is 0x1, maybe mean to begin to send basic info of file, format is: i. 3 unknown byte, all 0 2. when operate type is 0x2, maybe mean to begin to send file data, format is the same as 0x1 3. when operate type is 0x3, maybe mean that transfering ends, the same format as when 0x1 4. when operate type is 0x7, indicate related operation of file, according to sub operate type, the content is different, format is: a. when sub operate type is 0x1, it's the transfer of file basic info, format is: i. two byte, all 0, usage unknown ii. sub operate byte 0x1 iii. file length, 4 byte iv. file data fragment count, one time send 1000byte, so this field is couted base on iii, 4 byte v. max length of fragment, 4 byte, often 1000byte a fragment, only the last fragment is not with the max length. vi. 16 byte md5, for small file, this is the whole file's md5. For file larger than 10002432 byte, the md5 is the leading 10002435 byte. Amazing, why choose this no-rule digit, make me feel sick. vii. file name's MD5, 16 byte ix. 8 unknown byte, all 0 x. file name 文件æ“作信æ¯åŒ…ï¼Œè¿™ä¸ªåŒ…é‡Œé¢æºå¸¦äº†æ–‡ä»¶çš„一些基本信æ¯ï¼Œæ ¼å¼ä¸º 1. 头部 2. 未知å—节,0x00 3. 2å—节æ“作类型,åŽç»æ ¼å¼ä¸º 1. æ“作类型为0x1时,å¯èƒ½æ˜¯è¡¨ç¤ºå¼€å§‹ä¼ 逿–‡ä»¶åŸºæœ¬ä¿¡æ¯ï¼Œæ ¼å¼ä¸º i. 三个未知å—节,全0 2. æ“作类型为0x2时,å¯èƒ½æ˜¯è¡¨ç¤ºå¼€å§‹ä¼ 逿–‡ä»¶çš„æ•°æ®ï¼Œæ ¼å¼å’Œ0x1æ—¶ç›¸åŒ 3. æ“作类型为0x3时,å¯èƒ½æ—¶è¡¨ç¤ºä¼ é€ç»“æŸï¼Œæ ¼å¼å’Œ0x1æ—¶ç›¸åŒ 4. 如果æ“作类型为0x7,表示文件相关æ“ä½œï¼Œæ ¹æ®åæ“作类型内容有所ä¸åŒï¼Œæ ¼å¼ä¸º a. å½“åæ“ä½œç±»åž‹ä¸º0x1时,表示文件基本信æ¯ä¼ è¾“ï¼Œæ ¼å¼ä¸º i. 两个å—节,为全0,作用未知 ii. åæ“ä½œç±»åž‹å—节0x1 iii. 文件长度,四å—节 iv. 文件数æ®åˆ†ç‰‡æ•°ï¼Œä¸€æ¬¡ä¼ é€1000å—èŠ‚ï¼Œæ‰€ä»¥è¿™ä¸ªåŸŸæ˜¯æ ¹æ®iii计算出æ¥çš„,4å—节 v. æ¯ä¸ªåˆ†ç‰‡çš„æœ€å¤§é•¿åº¦ï¼Œ4å—节,一般都是1000å—èŠ‚ä¸€ä¸ªåˆ†ç‰‡ï¼Œåªæœ‰æœ€åŽä¸€ä¸ªä¸æ˜¯æœ€å¤§å—节数 vi. 16个å—节的md5,对于较å°çš„æ–‡ä»¶ï¼Œè¿™ä¸ªå°±æ˜¯å…¨éƒ¨æ–‡ä»¶çš„md5,对于超过10002432å—节的 文件,这个MD5是å‰10002432å—节的MD5ã€‚å¤ªå˜æ€äº†ï¼Œä¸ºä»€ä¹ˆé€‰è¿™ä¹ˆä¸€ä¸ªæ²¡è§„律的数å—。找 的我头都晕了。 vii. 文件åçš„MD5,16å—节 viii. 文件åå—节长度,2å—节 ix. 八个未知å—节,全0 x. 文件å b. If the sub operate type is 0x2, it means file transfer, format is: i. message packet sequence ii. sub operate type byte 0x2 iii. fragment suqence, 4 byte iv. absulute offset of current fragment in the file, 4 byte v. data byte count contained by current, 2 byte vi. real data c. If the sub operate type is 0x3, it means the transfer ends, format is: i. the biggest fragment sequence add 1. for example, if the file is divided into two fragment to send, here is 3, 2 byte ii. sub operate type 0x3 b. å¦‚æžœåæ“ä½œç±»åž‹ä¸º0x2,表示文件数æ®ä¼ è¾“ï¼Œæ ¼å¼ä¸º i. 消æ¯åŒ…的顺åºå· ii. åæ“ä½œç±»åž‹å—节0x2 iii. 分片åºå·ï¼Œ4å—节 iv. 当å‰åˆ†ç‰‡åœ¨æ–‡ä»¶ä¸çš„ç»å¯¹å移, 4å—节 v. 当å‰åŒ…å«çš„æ•°æ®å—节数,2å—节 vi. å®žé™…çš„æ•°æ® c. å¦‚æžœåæ“ä½œç±»åž‹ä¸º0x3ï¼Œè¡¨ç¤ºæ–‡ä»¶ä¼ é€ç»“æŸï¼Œæ ¼å¼ä¸º i. 最大分片åºå·åŠ 1,例如如果文件分æˆä¸¤ä¸ªåˆ†ç‰‡å‘é€ï¼Œé‚£ä¹ˆè¿™é‡Œå°±æ˜¯3,2å—节 ii. åæ“ä½œç±»åž‹0x3 5. when operate type is 0x8, it's 0x7 operation 's reply packet. According to different sub operate there are different reply packet. format is: a. If sub operate type is 0x1, it means the file basic info Ack is received, format is: i. two unknown byte, 0x0000 ii. sub operate type field, 0x1, 1 byte iii. unknown 4 byte, all 0 b. If the sub operate is 0x2, it mwan that the file fragment is received, format is : i. packet sequence ii. sub operate type field, 0x2, 1 byte ii. fragment sequence, 4 byte c. If the sub operate type is 0x3, it mean the ending info is received, format is: i. the biggest fragment sequence add 1 , 2 byte ii. sub operate type field, 0x3, 1 byte 5. æ“作类型为0x8时,为0x7æ“作的回å¤åŒ…ï¼Œæ ¹æ®åæ“作类型ä¸åŒè€Œä¸åŒï¼Œæ ¼å¼ä¸º a. å¦‚æžœåæ“ä½œç±»åž‹ä¸º0x1,表示确认文件基本信æ¯å·²ç»æ”¶åˆ°ï¼Œæ ¼å¼ä¸º i. 未知两个å—节,0x0000 ii. åæ“ä½œç±»åž‹å—æ®µï¼Œ0x1,1å—节 iii. 未知的四å—节,全0 b. å¦‚æžœåæ“ä½œç±»åž‹ä¸º0x2ï¼Œè¡¨ç¤ºå·²ç»æ”¶åˆ°äº†æ–‡ä»¶åˆ†ç‰‡ï¼Œæ ¼å¼ä¸º i. 包顺åºå· ii. åæ“ä½œç±»åž‹å—æ®µï¼Œ0x2,1å—节 iii. 分片åºå·ï¼Œ4å—节 c. å¦‚æžœåæ“ä½œç±»åž‹æ˜¯0x3ï¼Œè¡¨ç¤ºå·²ç»æ”¶åˆ°äº†ç»“æŸä¿¡æ¯ï¼Œæ ¼å¼ä¸º i. 最大的分片åºå·å†åŠ 1,2å—节 ii. åæ“ä½œç±»åž‹å—æ®µï¼Œ0x3,1å—节 note: this kind of packet need not to encode. 注æ„:这ç§åŒ…éƒ½ä¸æ˜¯åŠ å¯†çš„
Field Summary |
---|
Fields inherited from class net.sf.jqql.obsolete.FilePacket |
---|
crypter, key, log, random, receiver, sender, source, tag, watcher |
Constructor Summary | |
---|---|
FileDataPacket(FileWatcher watcher)
construct a send packet æž„é€ ä¸€ä¸ªå‘é€åŒ… |
Method Summary | |
---|---|
boolean |
equals(Object obj)
|
protected void |
fill(ByteBuffer out)
initialize packet content, subclass should overide this method, and first use this method in super class × content of input ByteBuffer will be clear, after complete, buffer position equal to packet length åˆå§‹åŒ–包内容,å类应该覆盖这个方法,并首先调用父类的这个方法 输入ByteBuffer原æ¥çš„内容将被清空,完æˆåŽï¼Œbufferçš„position ç‰äºŽåŒ…é•¿ |
protected void |
fill(ByteBuffer out,
int from)
initialize packet content, subclass should overide this method, and first use this method in super class content of input ByteBuffer won't be clear, new content start fill from from position, after complete, buffer position = packet length + from åˆå§‹åŒ–包内容,å类应该覆盖这个方法,并首先调用父类的这个方法 输入ByteBuffer的原æ¥å†…容ä¸è¢«æ¸…空,新的内容从fromä½ç½®å¼€å§‹ 填充,完æˆåŽï¼Œbufferçš„positionç‰äºŽåŒ…é•¿åŠ ä¸Šfrom |
char |
getCommand()
|
byte[] |
getFileMD5()
|
String |
getFileName()
|
byte[] |
getFileNameMD5()
|
int |
getFileSize()
|
byte[] |
getFragmentData()
|
int |
getFragmentIndex()
|
int |
getFragmentLength()
|
int |
getFragmentMaxSize()
|
int |
getFragmentOffset()
|
int |
getFragments()
|
char |
getHeartBeatSequence()
|
byte |
getInfoType()
|
int |
getPacketIndex()
|
int |
hashCode()
|
protected void |
initFixedFields()
init some fixed field toward fixed type packet åˆå§‹åŒ–一些对于固定类型的包æ¥è¯´å›ºå®šå€¼çš„å—æ®µ |
protected void |
parse(ByteBuffer in)
parse packet header, subclass should overide this method, and first use this method in super class parse start from current position of in, after parse complete, position of in will be after this packet è§£æžåŒ…头,å类应该覆盖该方法,并首先调用父类的这个方法 è§£æžä»Žin的当å‰ä½ç½®å¼€å§‹ï¼Œè§£æžå®Œæ¯•åŽinçš„positionå°†ä½äºŽ è¿™ä¸ªåŒ…ä¹‹åŽ |
void |
setCommand(char command)
|
void |
setFileMD5(byte[] firstMD5)
|
void |
setFileName(String fileName)
|
void |
setFileNameMD5(byte[] secondMD5)
|
void |
setFileSize(int fileSize)
|
void |
setFragmentData(byte[] framgentData)
|
void |
setFragmentIndex(int fragmentIndex)
|
void |
setFragmentLength(int fragmentSize)
|
void |
setFragmentMaxSize(int fragmentMaxSize)
|
void |
setFragmentOffset(int fragmentOffset)
|
void |
setHeartBeatSequence(char heartBeatSequence)
|
void |
setInfoType(byte infoType)
|
void |
setPacketIndex(int packetIndex)
|
Methods inherited from class net.sf.jqql.obsolete.FilePacket |
---|
decryptQQ, encryptQQ, generateKey, getKey, getReceiver, getSender, getSource, getTag, refreshKey, setReceiver, setSender, setSource, setTag |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public FileDataPacket(FileWatcher watcher)
watcher
- FileWatcher objectwatcher
- FileWatcher对象Method Detail |
---|
protected void fill(ByteBuffer out)
FilePacket
initialize packet content, subclass should overide this method, and first use this method in super class × content of input ByteBuffer will be clear, after complete, buffer position equal to packet length åˆå§‹åŒ–包内容,å类应该覆盖这个方法,并首先调用父类的这个方法 输入ByteBuffer原æ¥çš„内容将被清空,完æˆåŽï¼Œbufferçš„position ç‰äºŽåŒ…é•¿
fill
in class FilePacket
out
- ByteBuffer对象,åšä¸ºè¾“出缓冲区 // ByteBuffer object, use to output bufferprotected void fill(ByteBuffer out, int from)
FilePacket
initialize packet content, subclass should overide this method, and first use this method in super class content of input ByteBuffer won't be clear, new content start fill from from position, after complete, buffer position = packet length + from åˆå§‹åŒ–包内容,å类应该覆盖这个方法,并首先调用父类的这个方法 输入ByteBuffer的原æ¥å†…容ä¸è¢«æ¸…空,新的内容从fromä½ç½®å¼€å§‹ 填充,完æˆåŽï¼Œbufferçš„positionç‰äºŽåŒ…é•¿åŠ ä¸Šfrom
fill
in class FilePacket
out
- ByteBuffer对象,åšä¸ºè¾“出缓冲区 // ByteBuffer object, use to output bufferfrom
- 开始填充的ä½ç½® //start fill positionprotected void parse(ByteBuffer in) throws PacketParseException
FilePacket
parse
in class FilePacket
in
- ByteBuffer对象,åšä¸ºè¾“入缓冲区 // ByteBuffer object, as input buffer
PacketParseException
public int getFileSize()
public void setFileSize(int fileSize)
fileSize
- The fileSize to set.public String getFileName()
public void setFileName(String fileName)
fileName
- The fileName to set.public int getPacketIndex()
public void setPacketIndex(int packetIndex)
packetIndex
- The fragment to set.public int getFragmentOffset()
public void setFragmentOffset(int fragmentOffset)
fragmentOffset
- The fragmentOffset to set.public int getFragmentLength()
public void setFragmentLength(int fragmentSize)
fragmentSize
- The fragmentSize to set.public byte[] getFragmentData()
public void setFragmentData(byte[] framgentData)
framgentData
- The framgentData to set.public byte getInfoType()
public void setInfoType(byte infoType)
infoType
- The infoType to set.public int getFragments()
public int getFragmentIndex()
public void setFragmentIndex(int fragmentIndex)
fragmentIndex
- The fragmentReceived to set.public char getHeartBeatSequence()
public void setHeartBeatSequence(char heartBeatSequence)
heartBeatSequence
- The heartBeatSequence to set.public byte[] getFileMD5()
public void setFileMD5(byte[] firstMD5)
firstMD5
- The firstMD5 to set.public int getFragmentMaxSize()
public void setFragmentMaxSize(int fragmentMaxSize)
fragmentMaxSize
- The fragmentMaxSize to set.public byte[] getFileNameMD5()
public void setFileNameMD5(byte[] secondMD5)
secondMD5
- The secondMD5 to set.protected void initFixedFields()
FilePacket
initFixedFields
in class FilePacket
public char getCommand()
public void setCommand(char command)
command
- The command to set.public int hashCode()
hashCode
in class Object
public boolean equals(Object obj)
equals
in class Object
|
JML | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |