问题描述
局域网IP(1)---->公网IP--->局域网IP(2)局域网IP(2)--->公网IP---->局域网IP(1)如何实现花生壳域名、Socket客户端和服务端的通讯!!!场景:我在局域网(2)中发布站点MyWebSite,通过配置花生壳域名cysong168.xxx.net和端口11000已经可以在外网访问站点MyWebSite。MyWebSite对应的局域网IP为192.168.1.102.花生壳域名cysong.xxx.net对应的外网ip为123.149.xx.45,做了192.168.1.102.影射端口11000问题:为什么Socket服务端和Socket客户端无法通讯:我在局域网(2)中放了Socket服务器端(IP:192.168.1.102.Port:11000),我在局域网(1)中放了Socket客户端(IP:123.149.xx.45.Port:11000)。先感谢大侠们的关注!!!!
解决方案
解决方案二:
先去把结构理顺了看看你写的,哪台是哪台我都看不懂
解决方案三:
引用楼主CYSONG168的回复:
我在局域网(1)中放了Socket客户端(IP:123.149.xx.45.Port:11000)。
你这个还是(2)的描述,不是(1)的描述。没有搞明白端节点“哪台是哪台”,确实无法继续下去。
解决方案四:
在现在普通的互联网通讯中,只可能客户端去访问服务器,不可能服务器去访问客户端。就好像你的(2)已经发布在公网上,那么全世界任何地方都能通过互联网来访问你的(2)。例如已经通过其11000端口使用http协议访问web服务器,那么就可以在花生壳的路由设置上再设置一个其它端口(例如11008),将其映射到192.168.1.102的另外一个端口(例如520端口)来对外提供tcp服务。当然你的这台机器上要运行一个TcpListner监听服务。而客户端,可能在n层NAT路由器后边,在公网上是访问不到的。不可能服务器去访问客户端,而是客户端先访问服务器,例如访问你的11008端口来建立tcp通讯连接。假设编程采取tcp长连接方式,那么服务器就可以随时实时推送消息给客户端。但是前提当然是——只能是客户端访问服务器去建立这个连接。
解决方案五:
如果你说的“放了Socket客户端(IP:123.149.xx.45.Port:11000)”是指一个客户端软件远程连接这个EndPoint地址的服务器端、而不是bind本地的这个Endpoing,那么你的意思是对的,描述上产生了问题。一定要注意,是客户端连接服务器,而且你的服务器端的http服务在11000端口,你要提供另外一个tcp/udp监听服务,应该另外开启一个其它的端口对外开放。