chord.java
<gh_stars>0// 实现一个基于UDP的p2p网络的chord算法
// 作者：李昊
// 日期：2018.12.25
// 语言：Java
// 编译环境：JDK 1.8.0_181
// 运行环境：JDK 1.8.0_181
// 依赖：无
// 说明：本程序实现了一个基于UDP的p2p网络的chord算法，实现了节点的加入、离开、查找、数据存储、数据查找等功能。
//      本程序的运行需要在命令行中指定参数，参数的个数和含义如下：
//      1. 参数1：节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      2. 参数2：节点的IP地址。
//      3. 参数3：节点的端口号。
//      4. 参数4：节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      5. 参数5：节点的后继节点的IP地址。
//      6. 参数6：节点的后继节点的端口号。
//      7. 参数7：节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      8. 参数8：节点的前驱节点的IP地址。
//      9. 参数9：节点的前驱节点的端口号。
//      10. 参数10：节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      11. 参数11：节点的后继节点的后继节点的IP地址。
//      12. 参数12：节点的后继节点的后继节点的端口号。
//      13. 参数13：节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      14. 参数14：节点的前驱节点的前驱节点的IP地址。
//      15. 参数15：节点的前驱节点的前驱节点的端口号。
//      16. 参数16：节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      17. 参数17：节点的后继节点的后继节点的后继节点的IP地址。
//      18. 参数18：节点的后继节点的后继节点的后继节点的端口号。
//      19. 参数19：节点的前驱节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      20. 参数20：节点的前驱节点的前驱节点的前驱节点的IP地址。
//      21. 参数21：节点的前驱节点的前驱节点的前驱节点的端口号。
//      22. 参数22：节点的后继节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      23. 参数23：节点的后继节点的后继节点的后继节点的后继节点的IP地址。
//      24. 参数24：节点的后继节点的后继节点的后继节点的后继节点的端口号。
//      25. 参数25：节点的前驱节点的前驱节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      26. 参数26：节点的前驱节点的前驱节点的前驱节点的前驱节点的IP地址。
//      27. 参数27：节点的前驱节点的前驱节点的前驱节点的前驱节点的端口号。
//      28. 参数28：节点的后继节点的后继节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      29. 参数29：节点的后继节点的后继节点的后继节点的后继节点的后继节点的IP地址。
//      30. 参数30：节点的后继节点的后继节点的后继节点的后继节点的后继节点的端口号。
//      31. 参数31：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      32. 参数32：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的IP地址。
//      33. 参数33：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的端口号。
//      34. 参数34：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      35. 参数35：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的IP地址。
//      36. 参数36：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的端口号。
//      37. 参数37：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      38. 参数38：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的IP地址。
//      39. 参数39：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的端口号。
//      40. 参数40：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      41. 参数41：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的IP地址。
//      42. 参数42：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的端口号。
//      43. 参数43：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      44. 参数44：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的IP地址。
//      45. 参数45：节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的前驱节点的端口号。
//      46. 参数46：节点的后�
[...]

继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      47. 参数47：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的IP地址。
//      48. 参数48：节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的后继节点的端口号。
//      49. 参数49：节点的前�
继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的ID，取值范围为[0, 2^m-1]，其中m为节点的位数，本程序中m取值为8，即节点的ID取值范围为[0, 255]。
//      50. 参数50：节点的前�
继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的IP地址。
//      51. 参数51：节点的前�
继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的前继节点的端口号。
//      52. 参数52：节点的后�
