什么是内网穿透我就不多解释了。能进来看看就不用解释了。我只是从我所理解的开始。实现内网穿透的代码实现(一)1.原理很简单,我们要实现的效果是用户访问服务器的54512端口和访问客户端的3306端口是一样的。当然最重要的还是客户端注册就是在客户端和服务端建立连接(这个连接可以是纯tcp、http、websocket,只要能互相通信即可),客户端需要告诉服务端我要暴露什么端口,以及然后服务器会监听相应数量的端口(这个地方可以优化让服务器只监听一个端口)。此时,客户端的注册已经完成。用户访问如果用户现在访问服务器的49875端口,如果想正确转发到客户端的9527端口应该怎么办呢?将用户的请求数据连同当前服务器端口a发送给客户端。为什么要发送当前服务器端口?因为我们要告诉客户端当前用户要访问哪个端口,所以我们先把端口映射关系返回给客户端。客户端收到请求后,查询端口映射关系,然后连接到对应的9527,发送服务器发送的用户请求数据,a.比如是http请求,可能是GET/XXXXHTTP/1.1HOST:XXXXUser-Aagent:xxx9527根据对应的用户请求数据进行响应,然后发送给与客户端a建立的连接。比如一个http响应HTTP/1.1200OKcontent-length:xxx\r\nhelloworld\r\n最后客户端将9527的响应数据转发给服务器,服务器再转发给用户。那么重复1~4就很清楚了!!!最终项目地址:https://github.com/fzdwx/burst原文档地址:https://www.yuque.com/fzdwx/g...以后可能会考虑写一个简化版的源码从0到1个。
