資源簡介
最近有幾個朋友來問我之前寫的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
評論
共有 條評論