【问题标题】:Connecting Tcp Client from one device to Tcp Server in another device将一台设备的 Tcp Client 连接到另一台设备的 Tcp Server
【发布时间】:2016-08-01 20:35:49
【问题描述】:

我正在使用的 Tcp 客户端/服务器代码在这里:clientserver。 正如标题所示,我正在我的计算机上运行服务器代码,我想使用客户端代码从另一台设备连接到它。我的问题是,我的客户端代码必须连接到哪个 IP 地址?我知道有很多相关的帖子,但我只获取有关问题的信息,而不是解决方案。

【问题讨论】:

  • 无论服务器有什么可路由的 IP 地址。如果您不知道如何找到它,请在服务器上打开命令提示符并键入 ipconfig 并按 Enter。如果您不熟悉网络,您还需要了解防火墙配置,以确保防火墙不会阻止您使用的任何端口上的请求。
  • ipconfig中的“可路由IP地址”究竟是什么?有 IPv4、IPv6、子网掩码和默认网关...
  • 客户端可以访问哪个 IP 地址。可能是 IPv4 地址。设备是否只有一个网络接口?通常也至少有一个环回。似乎您最好接受一点网络接口 101 培训。阅读有关这些内容的信息。互联网上有大量关于它的资料。这都是一般理论,不适合 SO 问题。
  • 我看到两个 VirtualBox 网络和一个无线 LAN 适配器 Wi-Fi 2。其余的处于“媒体断开连接”状态。由于我没有使用 VirtualBox,所以我只剩下无线 LAN 适配器。

标签: c# client-server ip-address


【解决方案1】:

这是开发客户端/服务器应用程序时的常见问题。在典型的家庭网络中,有多个本地 IP 地址和一个外部 IP 地址。从外部与您的网络通信的所有设备都必须使用外部 IP 地址。但是,在编写客户端/服务器应用程序时,如果您只是输入外部 IP 地址作为连接地址,您很快就会发现这是行不通的。

您需要使用端口转发。客户端和服务器将通过特定端口进行通信,端口转发是您的路由器在客户端连接到外部 IP 地址时知道将数据发送到哪个本地 IP 地址的方式。您想要登录到您的路由器设置,导航到有关端口转发的部分,并指定通过您在服务器中使用的端口进行的通信应该重定向到您的服务器正在运行的本地 IP 地址。具体如何更改路由器上的这些设置取决于您使用的路由器。

在运行服务器的机器上的 Windows 命令提示符中运行 ipconfig 命令。从结果中获取本地 IPv4 地址。这是在端口转发客户端/服务器应用程序使用的端口时使用的地址。相应地调整您的路由器设置,然后您的客户端应该能够使用您的外部 IP 地址就好了。

要查找您的外部 IP 地址,http://www.whatsmyip.org/ 等任何网站都应该可以正常工作。

如果您想暂时避免所有这些问题并简单地在您的家庭网络上测试您的应用程序,那么请使用在您的服务器运行的机器上运行 ipconfig 命令时找到的本地 IPv4 地址。请注意,这仅在客户端和服务器都在同一网络上运行时才有效。

【讨论】:

  • 正如你所建议的,我的客户端和服务器都在同一个网络上。我正在使用笔记本电脑(服务器)的本地 IPv4 地址,因此我的客户端应该能够理解该地址。但是,我收到此错误 - WinRT 信息:连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接失败,因为连接的主机未能响应。我相当确定客户端确实知道现在要访问哪个服务器。预计服务器会做出什么样的响应?
  • @Maydayfluffy 嗯。您是否更改了从这些链接发送的代码?这可能是由几个不同的事情引起的。也许打印出服务器在此处获取的 IPAddress:IPAddress ipAddress = ipHostInfo.AddressList[0];,如果它与 IPv4 不同,请尝试使用该地址?还要确保客户端和服务器都设置为在同一端口上连接。除此之外,可能是防火墙问题。该端口可能正在被其他东西使用,或者您的防火墙设置可能会阻止该端口上的连接。
  • 谢谢!它归结为防火墙问题。禁用它使一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2018-10-31
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多