使用.net standard实现不一样内网端口的互通(相似花生壳)

应用场景

1.公司电脑与家中电脑的远程控制,通常经过teamview、向日葵等软件,端口互通后,可使用电脑自带的远程桌面git

2.家中电脑搭建SVN、git仓库,在外网或者内网访问,通常使用云服务器,端口互通后,能够部署在任意电脑程序员

3.家中电脑搭建数据库web服务以及其余基于TCP协议的服务,端口互通后,能够部署在任意电脑github

注意:并非说就不须要购买云服务器了,而是运行的服务能够部署在任意电脑,云服务器还是必须的,可是能够买最便宜的服务器以达到省钱的目的web

 

技术原理

模式一  服务器中转:

  场景:咱们有电脑A和电脑B,他们在不一样的局域网,如今咱们须要在电脑A访问电脑B的web服务(端口是80)数据库

  原理:咱们经过监听电脑A的端口80,当此端口接收到http请求的时候,程序将经过一些操做,在电脑A、服务器以及电脑B中创建一条专用TCP连接,而后电脑A将80端口接收到的数据转发到服务器中,而后服务器再把数据发送给电脑B的80端口,从而实现访问电脑B的web服务的目的。windows

 

模式二 直接链接:

  场景:咱们有电脑A和电脑B,他们在不一样的局域网,如今咱们须要在电脑A访问电脑B的web服务(端口是80)服务器

  原理:咱们经过监听电脑A的端80,当此端口接收到http请求的时候,程序将经过一些操做,在电脑A与电脑B中创建一条直连的TCP链接,而后电脑A将80端口收到的数据直接发送到电脑B的80端口,从而实现访问电脑B的web服务。svn

 

 

项目结构介绍

完整结构:

 

 

 

项目一共分为2种:性能

第一种:.net standard开发的核心库,编译后是dll,能够跨平台但不能直接运行测试

第二种:另外一种是.net core以及.net framework开发的启动器,编译后是各个平台能够运行的程序。

将核心库的dll,放入启动器的指定目录中,才能正常运行程序。

 

P2PSocket.Core项目

 

 

 

这个项目主要是一些基类的实现,具体就不介绍了。

 

P2PSocket.Client项目

 

 

这是客户端的核心库 

Commands:用于处理来自服务端发送的消息

 ConfigIO:配置文件的读取

 Receive:由于拆包是本身写的,在基类,而因为一些特殊状况,会须要不一样的拆包逻辑,继承基类后的新类都在Receive目录(名字错了哈哈哈)

 Send:这个目录主要存放的是发送到服务端的数据包封装类

 

P2PSocket.Server

 

 

 这是服务端的核心库,结构与客户端一致

 

P2PSocket.StartUp项目

 

这是一个.net core2.1项目,主要是经过反射启动客户端或者服务端,它能够跨平台。

 

 

P2PSocket.StartUp_Windows项目

 

 

 

这是专门为windows开发的启动器,主要是能够注册为服务,从而达到开机自启的目的。

 

剩下的项目能够忽略了。

 

项目源码下载地址

https://github.com/bobowire/Wireboy.Socket.P2PSocket

 

最新程序下载地址

https://github.com/bobowire/Wireboy.Socket.P2PSocket/releases

 

结语

这个项目是2019年2月开始开发的,那时候由于teamview开始有商业模式限制,因此本身萌发了作一款端口互通的软件,不只能够帮助公司协助解决用户问题,还能在公司远程家里以及在家里加班???哈哈哈

最初的版本开发了差很少20多天,而后通过2次代码重构,变成了如今这个样子。代码重构很痛苦,你们写代码需谨慎。固然,在个人计划中,我又要开始第3次代码重构了。

有了这个东西以后,我发现不少程序员须要的东西就再也不那么纠结了,好比我想要个数据库,想要个svn,想要个本身用的web网盘,不用去管云服务器的硬盘、cpu等限制了,仍是很实用的。不过你可能须要一个大宽带的云服务器了哈哈。

另外关于程序的性能,我用的阿里云服务器,程序满载宽带的话,cpu差很少是3.5%左右。另外有人给我这个程序测试了一下可以链接的客户端数量,说是500+的客户端链接正常使用,他测不了更多了。

最后,github中的star你们能够点一下,若是大家fork了代码,必定要隔一段时间同步一下主版本的代码。github中的QQ群你们若是没问题就不要加进去了,由于没问题的人都会被清理出去。最后,欢迎你们提bug,不要提需求!!!

 

 

github首页展现

相关文章
相关标签/搜索