问题描述:
客户端A、B、C、D通过外网(InterNet)与服务器S相连接。进行远程数据交换。A、B、C、D都是通过ADSL上网,动态IP。也有可能是通过代理服务器上网。
数据交换在A、B、C、D之间进行,为了减少对服务器的压力,打算当A要从B取得数据时,A通过服务器得到B的网络地址,然后A直接连到B进行数据交换。
想了几种方案都有缺陷,哪位高手能出一个好的方案,多谢。
------解决方案--------------------
A向S发出申请(与B传递数据)
服务器S向B发出申请(请求与A建立连接)
B同一连接,打开端口(由软件控制)
S向A发送B的地址,向B发送A的地址(服务器实时更新A B的IP地址,当地址变化时向A B更新)
A接受B地址后向B发起连接,端口为软件设置
B判断连接的IP,如果非A则拒绝,如果是则允许接入
(或者可以设定密码,改密码是隐性由服务器发送双方接受的,不会被查知)
(如果要求的密级更高,可以考虑用证书方式,一次性使用)
综上:
需要注意的问题:1需要A B C D 均有相应软件支持
或者从服务器下载的插件
又或者时刻登陆S ,由S的插件实现
------解决方案--------------------
服务器返回客户请求连接对象的IP地址(如果在线的话),
如果请求对象为服务器自己,刚直接建立连接,
规则自己定义吧,
仅供参考
------解决方案--------------------
ADSL虽然是动态分配IP地址的,但是每个ADSL都有一个固定码的,也是四位的IP,用此判定就行了^_^