过程和网上方法的差不多了,TCP打洞。
S-服务器
A和B分别是在路由后面的机器,A想和B连接,A和B分别和服务器建立一个主连接用于通信.....
A和服务器的协助打洞套接字建立连接,让服务器知道NAT-A转换后的公网IP地址和端口等信息。。。。。
B也和服务器建立连接,让服务器知道NAT-B转换后的公网IP地址和端口等信息,获取后就关闭协助打洞连接
打洞是成功了,但是有一些小问题
1-A或者B同服务器S的协助打洞套接字连接后,有一个转换后的端口,这个端口好像有周期性? 一段时间后就不能用了,就需要重新去同服务器协助打洞连接来获取新端口才能用,这个端口一般周期性是多久?
2-A和B第一次打洞完成后,比如协商的是端口3000,建立连接后,B再建立一个监听套接字,端口为5000,这个时候如果A用B的5000对应的网络端口去连接B,就不需要再通过打洞的步骤就可以建立连接,目前我测试的几个路由器都可以,是不是绝大多数的路由器都可以这样?
3-对于多重路由下的机器,好像网上的方法就不管用了,可以从多重路由下连接出去(当然还是要通过打洞方式),但是要连接进来就不可以,是路由器本身有限制还是多重路由需要其它的方式?
S-服务器
A和B分别是在路由后面的机器,A想和B连接,A和B分别和服务器建立一个主连接用于通信.....
A和服务器的协助打洞套接字建立连接,让服务器知道NAT-A转换后的公网IP地址和端口等信息。。。。。
B也和服务器建立连接,让服务器知道NAT-B转换后的公网IP地址和端口等信息,获取后就关闭协助打洞连接
打洞是成功了,但是有一些小问题
1-A或者B同服务器S的协助打洞套接字连接后,有一个转换后的端口,这个端口好像有周期性? 一段时间后就不能用了,就需要重新去同服务器协助打洞连接来获取新端口才能用,这个端口一般周期性是多久?
2-A和B第一次打洞完成后,比如协商的是端口3000,建立连接后,B再建立一个监听套接字,端口为5000,这个时候如果A用B的5000对应的网络端口去连接B,就不需要再通过打洞的步骤就可以建立连接,目前我测试的几个路由器都可以,是不是绝大多数的路由器都可以这样?
3-对于多重路由下的机器,好像网上的方法就不管用了,可以从多重路由下连接出去(当然还是要通过打洞方式),但是要连接进来就不可以,是路由器本身有限制还是多重路由需要其它的方式?