欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 【网络代理模块】反向代理(下)

【网络代理模块】反向代理(下)

2024/10/24 19:16:27 来源:https://blog.csdn.net/weixin_56520780/article/details/142924738  浏览:    关键词:【网络代理模块】反向代理(下)

1 反向代理部署遇到的问题

1.1 通道异常断开导致数据丢失

将外网程序布置在云服务器上(外网)测试,ssh协议进行测试会莫名其快通道断开,发现丢了一个报文。丢报文的原因是:我们内网模块从命令通道接收到外网模块发来的的ip和port后需要对外网模块和目标IP和port建立TCP连接的时候,这里的连接是非阻塞的,在三次握手没有完成之前,向socket中写入数据会失败,所以丢了一个报文。

可以在TCP连接外网和TCP连接目标IP和port后面加一行sleep(1)休眠1s,发现解决了数据丢失问题,但这不是解决问题的方法。

解决问题的方法是像正向代理一样最后对EPOLLIN和EPOLLOUT的操作。

1.2 定时器与心跳

跟正向代理一样,对内网程序来说定时器到了有两件事可以做:

1)设置进程的心跳;

2)清理空闲的客户端socket。

对外网程序来说,定时器到了有三件事情可做:

1)更新进程的心跳;

2)向命令通道发送心跳报文;

3)清理空闲的客户端socket。

一定要做心跳报文,如果不做心跳报文,TCP连接时间长了会被强制断开;心跳很简单,设置一个字符串传过去就行了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com