⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filedatapacket.java

📁 用java实现的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

    // 处理文件传输完毕包
    private void parseTransferFinished(ByteBuffer in) {        
    }

    // 解析heart beat回复包
    private void parseHeartBeatAck(ByteBuffer in) {
        // heart beat序号
        heartBeatSequence = in.getChar();
    }

    // 解析heart beat包
    private void parseHeartBeat(ByteBuffer in) {
        // heart beat 序号
        heartBeatSequence = in.getChar();
    }

    // 解析文件结束回复包
    private void parseFileEOFAck(ByteBuffer in) {
    }

    // 解析文件数据信息回复包
    private void parseDataInfoAck(ByteBuffer in) {
		// 之前已经收到的最大分片序号
		fragmentIndex = in.getInt();
    }

    // 解析文件基本信息回复包
    private void parseBasicInfoAck(ByteBuffer in) {
    }

    // 解析文件数据信息包
    private void parseDataInfo(ByteBuffer in) {
		// 已经发送的分片最大序号
		fragmentIndex = in.getInt();
		// 分片偏移
		fragmentOffset = in.getInt();
		// 分片长度
		fragmentLength = in.getChar();
		// 分片内容
		fragmentData = new byte[fragmentLength];
		in.get(fragmentData);
    }

    // 解析文件基本信息包
    private void parseBasicInfo(ByteBuffer in) {
		// 文件长度
		fileSize = in.getInt();
		// 分片数
		fragments = in.getInt();
		// 分片长度
		fragmentMaxSize = in.getInt();
		// 文件MD5
		fileMD5 = new byte[16];
		in.get(fileMD5);
		// 文件名MD5
		fileNameMD5 = new byte[16];
		in.get(fileNameMD5);
		// 文件名长度
		int len = in.getChar();
		// 8个未知字节,全0
		in.getLong();
		// 文件名
		byte[] b = new byte[len];
		in.get(b);
		fileName = Utils.getString(b, QQ.QQ_CHARSET_DEFAULT);
    }
	
	/**
	 * @return Returns the fileSize.
	 */
	public int getFileSize() {
		return fileSize;
	}
	
	/**
	 * @param fileSize The fileSize to set.
	 */
	public void setFileSize(int fileSize) {
		this.fileSize = fileSize;
		fragments = fileSize / watcher.getMaxFragmentSize() + 1;
	}
	
	/**
	 * @return Returns the fileName.
	 */
	public String getFileName() {
		return fileName;
	}
	
	/**
	 * @param fileName The fileName to set.
	 */
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
	/**
	 * @return Returns the fragment.
	 */
	public int getPacketIndex() {
		return packetIndex;
	}
	
	/**
	 * @param packetIndex The fragment to set.
	 */
	public void setPacketIndex(int packetIndex) {
		this.packetIndex = packetIndex;
	}
	
	/**
	 * @return Returns the fragmentOffset.
	 */
	public int getFragmentOffset() {
		return fragmentOffset;
	}
	
	/**
	 * @param fragmentOffset The fragmentOffset to set.
	 */
	public void setFragmentOffset(int fragmentOffset) {
		this.fragmentOffset = fragmentOffset;
	}
	
	/**
	 * @return Returns the fragmentSize.
	 */
	public int getFragmentLength() {
		return fragmentLength;
	}
	
	/**
	 * @param fragmentSize The fragmentSize to set.
	 */
	public void setFragmentLength(int fragmentSize) {
		this.fragmentLength = fragmentSize;
	}
	
	/**
	 * @return Returns the framgentData.
	 */
	public byte[] getFragmentData() {
		return fragmentData;
	}
	
	/**
	 * @param framgentData The framgentData to set.
	 */
	public void setFragmentData(byte[] framgentData) {
		this.fragmentData = framgentData;
	}
	
	/**
	 * @return Returns the infoType.
	 */
	public byte getInfoType() {
		return infoType;
	}
	
	/**
	 * @param infoType The infoType to set.
	 */
	public void setInfoType(byte infoType) {
		this.infoType = infoType;
	}
	
	/**
	 * @return Returns the fragments.
	 */
	public int getFragments() {
		return fragments;
	}
	
	/**
	 * @return Returns the fragmentReceived.
	 */
	public int getFragmentIndex() {
		return fragmentIndex;
	}
	
	/**
	 * @param fragmentIndex The fragmentReceived to set.
	 */
	public void setFragmentIndex(int fragmentIndex) {
		this.fragmentIndex = fragmentIndex;
	}
	
    /**
     * @return Returns the heartBeatSequence.
     */
    public char getHeartBeatSequence() {
        return heartBeatSequence;
    }
    
    /**
     * @param heartBeatSequence The heartBeatSequence to set.
     */
    public void setHeartBeatSequence(char heartBeatSequence) {
        this.heartBeatSequence = heartBeatSequence;
    }
    
    /**
     * @return Returns the firstMD5.
     */
    public byte[] getFileMD5() {
        return fileMD5;
    }
    
    /**
     * @param firstMD5 The firstMD5 to set.
     */
    public void setFileMD5(byte[] firstMD5) {
        this.fileMD5 = firstMD5;
    }
    
    /**
     * @return Returns the fragmentMaxSize.
     */
    public int getFragmentMaxSize() {
        return fragmentMaxSize;
    }
    
    /**
     * @param fragmentMaxSize The fragmentMaxSize to set.
     */
    public void setFragmentMaxSize(int fragmentMaxSize) {
        this.fragmentMaxSize = fragmentMaxSize;
    }
    
    /**
     * @return Returns the secondMD5.
     */
    public byte[] getFileNameMD5() {
        return fileNameMD5;
    }
    
    /**
     * @param secondMD5 The secondMD5 to set.
     */
    public void setFileNameMD5(byte[] secondMD5) {
        this.fileNameMD5 = secondMD5;
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.filetrans.FilePacket#initFixedContent()
     */
    protected void initFixedContent() {
        tag = QQ.QQ_FILE_DATA_PACKET_TAG;
        source = QQ.QQ_CLIENT;
        refreshKey();
        sender = watcher.getMyQQ();
        receiver = watcher.getHisQQ();
    }
    
    /**
     * @return Returns the command.
     */
    public char getCommand() {
        return command;
    }
    
    /**
     * @param command The command to set.
     */
    public void setCommand(char command) {
        this.command = command;
    }
    
    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        if(command == QQ.QQ_FILE_CMD_FILE_OP || command == QQ.QQ_FILE_CMD_FILE_OP_ACK)
            return (command << 24) | (infoType << 16) | packetIndex;
        else
            return (command << 24) | heartBeatSequence;
    }
    
    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj) {
        if(obj instanceof FileDataPacket) {
            FileDataPacket packet = (FileDataPacket)obj;
            if(packet.command == QQ.QQ_FILE_CMD_FILE_OP || packet.command == QQ.QQ_FILE_CMD_FILE_OP_ACK)
                return packet.command == command && packet.infoType == infoType && packet.packetIndex == packetIndex;
            else
                return packet.command == command && packet.heartBeatSequence == heartBeatSequence;
        } else
            return false;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -