我在 vb6(winsock) 中创建的客户端/服务器程序不能在 WAN 上运行,但可以在 LAN 上完美运行 为啥?

Posted

技术标签:

【中文标题】我在 vb6(winsock) 中创建的客户端/服务器程序不能在 WAN 上运行,但可以在 LAN 上完美运行 为啥?【英文标题】:My client/server program created in vb6(winsock) dont work on WAN but perfectly works n LAN Why?我在 vb6(winsock) 中创建的客户端/服务器程序不能在 WAN 上运行,但可以在 LAN 上完美运行 为什么? 【发布时间】:2013-01-14 20:52:58 【问题描述】:

我在vb6 中的winsock 的帮助下创建了一个简单的客户端/服务器程序。它在 LAN 上完美运行,但问题是它在 WAN 上不起作用。所有端口都已打开,防火墙已关闭,我有动态 IP,所以我使用No-ip 来获取命名 IP 地址。 我想问的另一个问题是,在客户端和服务器上打开端口是否重要?例如-我在端口 50505 上创建了程序,在客户端计算机上端口是打开的,但在服务器上打开 50505 也很重要吗??

这是我的project。

如果有人能找到问题,请告诉我。我会很感激的

【问题讨论】:

【参考方案1】:

好的,首先确保在客户端程序中,Localport 未设置为任何值,因为 Windows 会为其分配一个,但 RemotePort 设置为 50505。在服务器端,RemotePort 设置为空,并且LocalPort 设置为 50505。

接下来,您需要确保您的服务器在您的网络上有一个静态 IP。 所以如果你的路由器的 LAN IP 是 192.168.1.1 你需要将你的服务器设置为 像 192.168.1.50 这样的东西,只要确保它没有被放入范围或 DHCP 服务器(即从路由器为每台计算机提供 IP 地址的服务器)。

接下来,您需要将路由器设置为“端口转发”。默认情况下,您的路由器不知道如何处理互联网发送给它的数据。您必须设置路由器以将任何数据从端口 50505 转发到网络上的服务器。

虽然这个接缝很长而且拉得很长,但安装时间不应超过 5-10 分钟。

祝你好运!

【讨论】:

只能说我花了 2 年时间才明白你所说的。【参考方案2】:

您需要配置服务器后面的路由器,以将该端口上的连接转发到运行服务器的计算机。

否则客户端将无法连接到服务器。

【讨论】:

假设他在 NAT 路由器后面,这是互联网术语中的“不寻常”(几乎是“异常”)情况,尽管在今天太常见了,几乎是台式机的规则。 你的回答对我没有帮助。请我想要一个解决方案 @Sam:你不明白哪一部分? 看,我在两台计算机上都打开了端口(在 WAN 上),即 50505,并且我在两台计算机上都禁用了防火墙。我尝试连接但失败了。为什么会这样。它在局域网上完美运行。我的路由器有一个 NAT 选项,其中有一个虚拟端口选项,它有助于打开端口,我成功打开它,但我还是失败了。看起来winsock只适用于局域网,但我知道我错了。请找到任何解决方案,请

以上是关于我在 vb6(winsock) 中创建的客户端/服务器程序不能在 WAN 上运行,但可以在 LAN 上完美运行 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

VB6 中的默认 WinSock 协议

VB6 Winsock 能够发送非常大的有效载荷

vb6 winsock 连接而不是每个设备的无限客户端减少到 2

VB6 Winsock 多个 TCP 连接 > DoEvents 问题

VB6 中的 Winsock 控件只向数组中的最后一个索引发送文本消息

请问:在VB6.0中使用winsock控件,作为服务器要设置本地IP地址吗?