[花生壳] [.net] 两个局域网之间的socket通讯实现问题 请教

时间:2022-10-14 20:12:51
局域网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)。

先感谢大侠们的关注!!!!

6 个解决方案

#1


[先去把结构理顺了
看看你写的,哪台是哪台我都看不懂,
引用 楼主 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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。 
你写了这么多IP地址  你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。,
该回复于2018-01-12 11:45:44被管理员删除
]

#1


[先去把结构理顺了
看看你写的,哪台是哪台我都看不懂,
引用 楼主 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 监听服务,应该另外开启一个其它的端口对外开放。, 在描述一遍吧。 
你写了这么多IP地址  你确定那个公网地址是你的路由器外网地址么。而不是花生壳的神马其他地址;
访问一下:www.ip168.com看看你的公网地址。,
该回复于2018-01-12 11:45:44被管理员删除
]