Shadowsocks-java

Update 130905: 注意这只是一个练习,日常使用推荐 Pythonnode.js

Shadowsocks-java你懂的 软件的客户端的 java 版本。

Python, node.js, Go, C, C#, Ruby, Javascript 各种版本都有了,似乎没见到 Java 版..(Android 客户端用的是 C 版
抱着 改改然后出安卓收费版 积攒一下经验值的想法,试着用 Java 重写了一遍这玩意..

获得成就:

  • 习得 java Socket 编程基础
  • 明白 select 是何物
  • 习得 Socks5 协议基础
  • 了解归并排序
  • ……

只写了原始的 table 加密,归并排序那段是抄现成的。
后来才知道有 Arrays.sort(T[], Comparator) 无需自己写排序,但 byte[] 要转成 Byte[] (?) 我怕影响效率就没动了。

网络那段和 Python 版的一样,用了线程和 select。每个连接一个线程,转发数据用 Selector 。期间反复参考了这篇文章
本想全改 select 的但是当时还不太明白 Selector 怎么用,下次也许能写出来了。

具体用法参照 README。传送门在文章开头。

Shadowsocks-java》上有7条评论

  1. CC

    楼主这个代码在哪了呀?链接已经挂掉了…

    只能找到这个java的版本:https://github.com/nooner2014/shadowsocks-java.git

    但是运行起来好像有问题。

    回复
    1. Null 文章作者

      嗯这个就是我当时写的,我还以为再也找不到了呢..
      确实有非常多问题,没有什么实用价值,修改也不如重新写过..
      这也是当时把代码删了的主要原因吧..

      回复
      1. CC

        这个shadowsocks-java对应的server端是什么代码还记得不呀?

        我在server端用的最早的单文件版本的Shadowsocks(server.py),但和这个java版本通信总是失败…

        回复
      1. Null 文章作者

        你好,这篇文章非常老了,现在 SS 协议本身的改动也很大。
        SS 协议细节可以参考 https://shadowsocks.org/ 上的说明、https://github.com/shadowsocks/shadowsocks-org/issues/ 中的讨论,以及其他有在维护的实现的代码。
        Java 网络这块我也不是很熟悉。

        回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注