局域网TCP服务器,需要外网能访问,怎么做?
不借助第三方软件,不做路由端口映射,有没办法实现?我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号...
不借助第三方软件,不做路由端口映射,有没办法实现?
我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号。
然后客户端再依这个IP和端口号TCP连接我处于内网的服务器。
我是用的socket来做,但我发现一个socket在connect出去以后,就不能listen。
如果断开connect再listen的话,那从路由申请到的端口号就不能用了。
再申明一遍:不能借助第三方软件(花生壳之类不要提了),不做路由端口映射。不过可以借助外网的HTTP服务(仅HTTP,不能扩展)。
有代码可参考的就贴下代码,没有的,说下思路也行。
刚查到一篇文章,发现和我的想法是一样的。
大家帮忙看看有没可行性?一直都只知道UDP打洞,TCP打洞还是头一次听说。
看了他的文章后我才知道我的socket不能转为listen状态是因为没有设置SO_REUSEADDR - -!
http://www.vckbase.com/document/viewdoc/?id=1773 展开
我之前的想法是,用类似UDP的办法,先从TCP服务器上向外网的指定IP的客户端发一个包,申明我的路由IP及申请到的端口号。
然后客户端再依这个IP和端口号TCP连接我处于内网的服务器。
我是用的socket来做,但我发现一个socket在connect出去以后,就不能listen。
如果断开connect再listen的话,那从路由申请到的端口号就不能用了。
再申明一遍:不能借助第三方软件(花生壳之类不要提了),不做路由端口映射。不过可以借助外网的HTTP服务(仅HTTP,不能扩展)。
有代码可参考的就贴下代码,没有的,说下思路也行。
刚查到一篇文章,发现和我的想法是一样的。
大家帮忙看看有没可行性?一直都只知道UDP打洞,TCP打洞还是头一次听说。
看了他的文章后我才知道我的socket不能转为listen状态是因为没有设置SO_REUSEADDR - -!
http://www.vckbase.com/document/viewdoc/?id=1773 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询