资源简介

最近有几个朋友来问我之前写的DHT爬虫相关的东西, 之前的代码写的很乱而且没有注释, 因此重构了一版并补齐了注释, 希望能方便有兴趣的朋友阅读, 直接运行Main.java不需要其他额外工作, 之前没有注释的版本下载地址http://download.csdn.net/detail/dgqjava/9561859, 不建议下那个代码了, 没注释而且结构混乱 代码文件编码是UTF8

资源截图

代码片段和文件信息

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * B编码的整数类型
 * integers(整数)编码为:i<整数>e 开始标记i,结束标记为e 例如: i1234e 表示为整数1234 i-1234e 表示为整数-1234 整数没有大小限制 i0e 表示为整数0 i-0e 为非法 以0开头的为非法如: i01234e 为非法
 * @author dgqjava
 *
 */
public class BencodeInteger implements BencodeType {
    
    private final String content;
    
    public BencodeInteger(String content) {
        this.content = content;
    }
    
    /**
     * 从指定位置开始获取一个B编码的整数对象
     * @param source 源字符串
     * @param index 指定位置
     * @return
     */
    public static BencodeInteger getInt(String source int index) {
        char c = source.charAt(index);
        if(c == ‘i‘) {
            source = source.substring(index + 1);
            return new BencodeInteger(source.substring(0 source.indexOf(“e“)));
        }
        return null;
    }

    public int getLength() {
        return content.length();
    }
    
    public int getTotalLength() {
        return getLength() + 2;
    }

    public byte[] getData() {
        try {
            return content.getBytes(“iso-8859-1“);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }
    
    public byte[] getTotalData() {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            baos.write((byte)‘i‘);
            baos.write(getData());
            baos.write((byte)‘e‘);
        } catch (IOException e) {
         throw new RuntimeException(e);
        }
        return baos.toByteArray();
    }

    public String toString() {
        return content;
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3457  2017-06-28 08:56  Bucket.java

     文件       5717  2017-06-28 08:56  DHTHelper.java

     文件      20925  2017-06-28 08:56  DHTServer.java

     文件       1027  2017-06-28 08:56  LocalDHTNode.java

     文件       1924  2017-06-28 08:56  Main.java

     文件       9356  2017-06-28 09:40  NIOHelper.java

     文件        629  2017-06-28 08:56  NodeId.java

     文件       2086  2017-06-28 08:56  NodeInfo.java

     文件       5834  2017-06-28 08:56  RoutingList.java

     文件       1889  2017-06-28 08:56  BencodeInteger.java

     文件       3548  2017-06-28 08:56  BencodeList.java

     文件       4059  2017-06-28 08:56  BencodeMap.java

     文件       2591  2017-06-28 08:56  BencodeString.java

     文件       2027  2017-06-28 08:56  BencodeType.java

----------- ---------  ---------- -----  ----

                65069                    14


评论

共有 条评论