【问题标题】:Change program IP address更改程序 IP 地址
【发布时间】:2015-11-03 15:43:09
【问题描述】:

我有一个 TCP 客户端/服务器应用程序,我需要更改客户端 IP 地址。如果我打开客户端应用程序,它将与服务器建立连接(客户端内部定义了服务器的 IP 地址 - .exe 文件)。有什么方法可以定义我要连接的 IP 地址吗?我用端口转发程序做过一次,但它有点复杂,如果用户想要连接,也需要使用这个程序。也许客户可以通过某种方式获得他连接到正确 IP 的信息,但他会连接到不同的,一些他没有在应用程序中定义的东西。

但也许这简直是不可能的 :D 。首先对不起我的英语,我希望你能理解这一点,如果不让我知道,我会试着解释一下。感谢您的任何建议。

【问题讨论】:

  • 我没有应用程序的源代码。或者你是什么意思?你的意思是在hosts文件中设置参数?
  • 是的,它是用 MMF 和 C++ 制作的应用程序,但不是我制作的。而且我没有它的源代码,我只有客户端和服务器的 .exe 文件。我希望现在很清楚。
  • 这听起来像XY problem。您认为这将确切解决什么问题?

标签: tcp ip tcpclient


【解决方案1】:

如果您知道应用程序中编码的主机名(如果是主机名),您可以在主机文件中写入/重写条目。

您可能会使用 etherial 或 wireshark(或其他数据包嗅探器)找到它。

如果您同时拥有客户端和服务器应用程序,我很惊讶没有配置文件或设置允许您更改此设置。如果它是一个配置文件,你可以重写那个条目...

【讨论】:

  • 所以我需要在客户端所在的每台 PC 上执行此操作,对吗?仅作记录,服务器应用程序将在 VPS 上。但我认为这是无关紧要的信息。
  • 如果有配置文件,您可以使用正确的 ip 预先填充它,或者当您的用户获取这对 exe 文件时,您可以给他们一个脚本来设置它。
  • 没有配置文件。只有一个 exe 文件(用于客户端)。是否可以在 c# 中创建新的 exe 文件或包含此 exe 文件和脚本的东西将重写主机文件?或者你怎么想“当用户抓取 exe”?
【解决方案2】:

处理此问题的最简单方法是客户端和服务器之间的合作。只需让客户端向服务器报告它希望使用的 IP 地址,并让服务器表现得好像连接源自该 IP 地址。 HTTP proxies 使用此方法,SMTP(电子邮件)使用类似方法。

由于您没有服务器或客户端的源代码,因此需要做一些额外的工作。

您需要创建自己的客户端和服务器。您的客户端将连接到您的服务器并告诉它应该看到的连接 IP。您的服务器会注意到这一点。然后您的客户端将启动客户端可执行文件。

您需要在服务器机器上拦截来自客户端的连接。查找连接应该来自的 IP 地址。您需要挂钩服务器可执行文件的接受逻辑,以查看它应该看到的 IP 地址,而不是真实的 IP 地址。

所以流程是:

  1. 使用客户端计算机的人启动客户端可执行文件,这是您必须制作的可执行文件。

  2. 您的可执行文件连接到您必须创建的服务器应用程序,并告诉它它应该来自的 IP 地址。

  3. 您的服务器应用程序记录了真实的源 IP 地址和客户端告诉它的 IP 地址。

  4. 您的客户端应用程序启动常规客户端可执行文件,它与服务器建立连接。

  5. 您在服务器计算机上的代码拦截服务器可执行文件的代码以接受此连接,并替换您在步骤 3 中存储的源 IP 地址。

【讨论】:

  • 这不只是用于网络吗?我需要它用于 .exe 应用程序。
  • @Koi 否。HTTP、SMTP 甚至许多通用代理都使用此方法。即使直到现在它只用于网络,是什么阻止你将它用于你想要的任何目的?您可以使用亚马逊使用的generic proxy protocol
  • 这对我来说似乎有点困难 :D :/ 也许你可以帮助我?
  • 想必你问如何做到这一点,因为你认为这是解决你遇到的任何问题的最简单方法,但你没有告诉我们你有什么问题。既然您看到这并不容易,也许您可​​以告诉我们您的实际问题,以便我们看看是否有更简单的方法来解决它。
猜你喜欢
  • 2019-01-31
  • 2015-05-05
  • 2017-01-05
  • 1970-01-01
  • 2023-03-27
  • 2021-05-11
  • 2021-06-02
  • 2016-09-25
  • 2016-11-23
相关资源
最近更新 更多