2015-10-07 313 views
0

我有一個TCP客戶端/服務器應用程序,我需要更改客戶端IP地址。如果我打開客戶端應用程序,它將建立與服務器的連接(客戶端在服務器 - .exe文件中定義IP地址)。有什麼方法可以定義我想連接的IP地址嗎?我曾經用端口轉發程序做過這個,但是它並不複雜,如果用戶想連接,用戶也需要使用這個程序。也許某種方式讓客戶獲得他連接到正確IP的信息,但是他將連接到不同的應用程序中的某些他沒有定義的內容。更改程序IP地址

但也許這只是根本不可能的:D。首先對於我的英語感到抱歉,我希望你能理解這一點,如果不讓我知道,我會試着再解釋一遍。感謝您的任何建議。

+0

我沒有應用程序的源代碼中的源IP地址。或者你是怎麼意思的? U是否意味着在hosts文件中設置參數? – Koi

+0

是的,它是應用MMF和C++製作的,但不是由我製作的。我沒有它的源代碼,我只有客戶端和服務器的.exe文件。我希望現在很清楚。 – Koi

+0

這聽起來像是[XY問題](http://meta.stackexchange.com/a/66378/167586)。你認爲這會完全解決什麼問題? –

回答

0

如果您知道在應用程序中編碼的主機名(如果是通過主機名),則可以在主機文件中寫入/重寫條目。

你可能會發現,與etherial或wireshark(或其他數據包嗅探器)。

如果你有客戶端和服務器應用程序,我很驚訝沒有一個配置文件或設置,允許你改變這一點。如果它是一個配置文件,你可以重新寫入該條目...

+0

因此,我需要在客戶端的每臺PC上執行此操作,對不對?僅供記錄,服務器應用程序將在VPS上。但這是我認爲不相關的信息。 – Koi

+0

如果有一個配置文件,你可以預先使用正確的ip來填充它,或者當你的用戶抓住這對exe文件時,你可以給它們一個腳本來設置它。 –

+0

沒有配置文件。只有一個exe文件(用於客戶端)。有可能使新的EXE文件可能在C#或什麼將包含此EXE文件和腳本什麼將重寫主機文件?或者你是怎麼想「用戶抓取exe」的? – Koi

0

最簡單的方法來處理這是通過客戶端和服務器之間的合作。只需讓客戶端將希望使用的IP地址報告給服務器,並讓服務器像來自該IP地址的連接一樣工作。此方法由HTTP proxies使用,並且SMTP(電子郵件)使用了類似的方法。

由於您沒有服務器或客戶端的源代碼,因此需要一些額外的工作。

您需要創建自己的客戶端和服務器。你的客戶端將連接到你的服務器,並告訴它它應該被視爲連接的IP。你的服務器會記下這個。然後你的客戶端將啓動客戶可執行文件。

您需要攔截來自服務器機器上客戶端的連接。查找連接應該來自的IP地址。您需要掛接服務器可執行文件的接受邏輯來查看它應該看到的IP地址,而不是真實的IP地址。

所以流程是:

  1. 有人使用客戶機啓動客戶端可執行文件,這是你必須做的可執行文件。

  2. 您的可執行文件連接到您必須製作的服務器應用程序,並告知它應該來自的IP地址。

  3. 您的服務器應用程序記錄了真實的源IP地址和客戶端告訴它的那個IP地址。

  4. 您的客戶端應用程序啓動常規客戶端可執行文件,它會連接到服務器。

  5. 您在服務器上的代碼攔截服務器可執行的代碼來接受這個連接並代你存儲在步驟3

+0

這不僅僅是爲了網絡嗎?我需要它的.exe應用程序。 – Koi

+0

@Koi號這個方法被HTTP,SMTP,甚至許多通用的代理使用。即使到目前爲止,它只能用於網絡,阻止你將它用於任何你想要的目的?您可以使用Amazon使用的[通用代理協議](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html#proxy-protocol)。 –

+0

這對我來說看起來有點困難:D:/也許你可以幫助我? – Koi