前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用.net standard实现不同内网端口的互通(类似花生壳)

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

作者头像
梁规晓
发布2020-11-05 11:25:20
1.5K0
发布2020-11-05 11:25:20
举报
文章被收录于专栏:DotNet程序园DotNet程序园

应用场景

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

2.家中电脑搭建SVN、git仓库,在外网或者内网访问,一般使用云服务器,端口互通后,可以部署在任意电脑

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

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

技术原理

模式一 服务器中转:

场景:我们有电脑A和电脑B,他们在不同的局域网,现在我们需要在电脑A访问电脑B的web服务(端口是80)

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

模式二 直接连接:

场景:我们有电脑A和电脑B,他们在不同的局域网,现在我们需要在电脑A访问电脑B的web服务(端口是80)

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

项目结构介绍

完整结构:

项目一共分为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首页展示

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

本文分享自 DotNet程序园 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 应用场景
  • 技术原理
    • 模式一 服务器中转:
      • 模式二 直接连接:
      • 项目结构介绍
        • 完整结构:
          • P2PSocket.Core项目
            • P2PSocket.Client项目
              • P2PSocket.Server
                • P2PSocket.StartUp项目
                  • P2PSocket.StartUp_Windows项目
                  • 项目源码下载地址
                  • 最新程序下载地址
                  • 结语
                  • github首页展示
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档