项目是C/S架构,因为业务需求需要,服务端在某些时刻需主动向客户端发送数据(只在某些时刻,不频繁交互数据).根据这一需求问题就来了
1.服务端如何主动向客户发送数据,保持长连接吗?这涉及心跳,连接池维护.使用短连接吗??该由谁主动发起连接??如果是服务端会遇到连接不成功的问题(出现的问题后述),如果是客户端主动发起,又该如何实施??用TCP或UDP定时向服务端发送数据询问吗??2.服务端主动连接客户端的问题,会遇到NAT,防火墙问题,我目前只处理NAT的情况,方法是客户端2小时定时向服务端发送小数据(打孔),在发生调用时服务端使用端口复用跟客户端建立通信(只针对非对称的NAT,理论上是可以,不过没测试),如果是防火墙直接拦掉呢??有相当部分的路由器会直接拦掉外网的主动连接请教各位牛牛们,给一些方案或是分析下方案的优缺点.....
1.服务端如何主动向客户发送数据,保持长连接吗?这涉及心跳,连接池维护.使用短连接吗??该由谁主动发起连接??如果是服务端会遇到连接不成功的问题(出现的问题后述),如果是客户端主动发起,又该如何实施??用TCP或UDP定时向服务端发送数据询问吗??2.服务端主动连接客户端的问题,会遇到NAT,防火墙问题,我目前只处理NAT的情况,方法是客户端2小时定时向服务端发送小数据(打孔),在发生调用时服务端使用端口复用跟客户端建立通信(只针对非对称的NAT,理论上是可以,不过没测试),如果是防火墙直接拦掉呢??有相当部分的路由器会直接拦掉外网的主动连接请教各位牛牛们,给一些方案或是分析下方案的优缺点.....
好!结果出来了!还是服务端主动连接客户端吧!要不畏NAT,克服防火墙最后达到客户端!
我只知道 穿透NAT 我用的打洞 其他的我不熟悉 呵呵!
期待接分!
要是UDP可以 但是长时间没有数据包的话 NAT分配的IP端口就没了
长连呗
种种原因,暂时不考虑使用UDP方式