首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >是的,我又用rust实现了一版socks5代理

是的,我又用rust实现了一版socks5代理

作者头像
KINGYT
发布2019-08-09 17:28:34
5.2K0
发布2019-08-09 17:28:34
举报

之前用c写过一版socks5代理(socks5代理写完了),自己一直在用,访问Google什么的感觉都挺流畅,自己也挺满意的。

不过因为这些天在学rust,一直想找个项目练手,所以决定用rust重新实现一版。

刚刚写完,测试过后,感觉非常好。

写这个项目本质上是为了练习rust,因为rust语言非常复杂,光看文档不能很好的体会它的各种独特的概念,所以必须写点东西,来加深对其了解。

刚开始写时,我觉得过程中肯定会遇到各种困难,各种 ownership 和 lifetime 问题,但写完回头一看,rust也根本没我开始预想的那么复杂,估计是被以前的学习过程吓怕了。

记得之前写过一个rust小工具(用rust写了个小程序),那叫一个费劲,花了好长时间才把那个项目写完,也正式写完那个项目,我决定暂时放弃rust学习,太复杂了。

这次放弃已经是我第二次放弃rust。

不过因为后来遇到好多优秀项目都是用rust写的,又让我对rust有了兴趣,不过有前两次的经验,这次心里预期并没有那么高了,准备把rust当成业余语言使用。

期间又仔细学习了它的各种概念,然后又用它刷leetcode,总算对rust有点信心。

直到写完这个项目,我觉得我终度过了rust这个陡峭的学习过程,终于可以随心所欲的写代码了。

不过,我现在还是觉得,rust不适合大部分团队,只有少部分精英团队才有可能用好用对。

对我来说,它在我这里的定位还是一门业余语言,学习并使用它全凭爱好。

说了这么多,还是说下这个项目吧。

写这个项目的过程,又让我再次加深了对tcp/epoll的理解,前两天也写了好几篇关于它们的文章,也算是收获颇丰。

下面是那些文章:

一个有关tcp的非常有意思的问题

对上一篇文章中tcp问题的进一步思考

epoll和shutdown使用不当可能导致死循环

socket的epollin/epollout是何时触发的

对又一个epoll问题的全面分析

read方法返回0后还会有epollin事件吗

我现在越来越觉得,底层学习太重要了,只要你掌握了底层知识,那不管你用什么语言,用什么框架,你都能抓住其精髓,使用起来得心应手。

大道至简,返璞归真。

项目我已经开源到Github,地址如下:

https://github.com/wangyuntao/socks5-rs

目前项目文档还比较少,有兴趣的同学自己读下代码吧,逻辑很简单。

个人对这个项目还是比较满意的。

完。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux内核及JVM底层相关技术研究 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档