如何实现花生壳域名、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)。
先感谢大侠们的关注!!!!
6 个解决方案
#1
[先去把结构理顺了
看看你写的,哪台是哪台我都看不懂,
你这个还是 (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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。
你写了这么多IP地址 你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。, ]
看看你写的,哪台是哪台我都看不懂,
你这个还是 (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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。
你写了这么多IP地址 你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。, ]
#1
[先去把结构理顺了
看看你写的,哪台是哪台我都看不懂,
你这个还是 (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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。
你写了这么多IP地址 你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。, ]
看看你写的,哪台是哪台我都看不懂,
你这个还是 (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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。
你写了这么多IP地址 你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。, ]