2010-03-29 113 views
1

我構建了一個由服務器和客戶端組成的TicTacToe遊戲應用程序(我使用TCP協議)(運行兩次來表示2個對手)。我有一個問題,我找不到解決方案,這就是爲什麼我問這個問題。問題是:當客戶端嘗試連接我的機器上的服務器時,它從不連接,因爲我的機器的IP地址(從Windows的本地連接的支持選項卡獲得)不正確。我試圖從告訴你你的IP的網站獲得我的IP地址,但我不工作。我有一個問題,以確定我的IP地址,任何機器可以從任何地方連接到我。 p.s.我正在使用路由器來連接互聯網。 謝謝。IP地址問題

+1

您需要轉發TCP端口您正在使用您的計算機(在您的路由器設置中) – TJMonk15 2010-03-30 00:06:18

回答

3

首先我會檢查,以確保任何本地設置和諸如此類的東西是正確運行的服務器和客戶端在同一臺機器上,並直接使用localhost127.0.0.1作爲IP地址。如果這不起作用,那麼您的代碼或本地防火牆出現問題,在查看路由器的東西之前,您必須先解決該問題。

本地防火牆很容易檢查,只是完全禁用所有的防火牆,看看你是否可以連接到本地主機。如果您無法連接完全禁用的防火牆,那麼您需要首先修復您的代碼。

如果確實有效,那麼可以通過防火牆允許您的(服務器)應用程序接受流量。打開連接的客戶端應用程序不會(不應該)自己有任何防火牆問題,因爲這是防火牆通常不會干擾的流量。

如果/當你可以連接到本地主機,你可以嘗試通過互聯網,通過你的路由器連接。很可能,你的問題是你的路由器沒有轉發你打開到你的計算機的端口。我只是自己手動實現端口轉發,你應該看看what this is以及爲什麼在弄亂事情之前需要你自己。基本上,您希望客戶端連接到您的公共IP(您從whatsmyip.org或任何地方找到的)以及您的路由器以轉發到您的LAN IP(您在局域網配置的支持選項卡中找到的內容)。對此的逐步說明是路由器特定的,但通常是直接的(在路由器管理頁面中通常有'防火牆'和/或'高級'選項卡或某些東西)。

你可能最終試圖實現的UPnP,這似乎並沒有從快速google search太複雜,但它可能是學習的你可能是舞臺過於複雜。

3
  string procCall = "http://project-intercept.com/ip.php"; 
      WebClient wc = new WebClient(); 
      UTF8Encoding utf8 = new UTF8Encoding(); 
      string requestHtml = ""; 
      requestHtml = utf8.GetString(wc.DownloadData(procCall));     
      return requestHtml; 

您可以使用project-intercept.com/ip.php(女巫是我的反作弊項目現場),或者你可以使用whatsmyip.org/ip.php(我認爲是URL)。基本上任何URL都是回聲只是IP。如果你想舉辦自己的PHP創建一個PHP文件,加入

echo $_SERVER['HTTP_CLIENT_IP']; 

echo $_SERVER['REMOTE_ADDR']; 
+0

也不適用。 – Sherif 2010-03-29 22:55:40

+1

我完全知道該代碼片段的作用。確保您的防火牆不會阻塞您的應用程序,對於路由器也是如此。如果你需要一個關於如何使用它的完整例子,請告訴我。請記住使用System.Net和System.Web – 2010-03-29 22:57:13

+0

什麼是「Settings.Log.Write(」GetMyIP():我的IP是:「+ requestHtml);」從哪裏獲得「設置」? – Sherif 2010-03-30 11:19:37