2011-12-03 198 views
1

我正在創建一個聊天程序。我想我對MSN和其他聊天工作有點困惑?目前,我在本地主機IP地址,只是連接到我自己。我能夠讓我的客戶端和服務器程序來回通信。我的問題是,有沒有辦法讓用戶知道IP地址?我也手動輸入我希望這兩個程序連接到的端口號。有沒有辦法避免這種情況呢?IP地址和端口號C#

我寧願要求用戶輸入用戶名和密碼!

了一些研究之後,我來了解以下內容:

IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

然而,上述代碼行返回機器的所有IP地址。我如何知道使用哪一個?

我不是很瞭解IP地址,所以任何背景信息和幫助都會很棒。

回答

2

聊天程序使用服務器來查找客戶端。當您登錄時 - 您連接到此服務器並傳遞您的IP地址。同時您還可以獲得其他客戶的地址。

這是第2英里的風光,但我想這是你需要知道

您可以在應用程序中使用DNS或主機名是什麼。

爲了讓您的電腦的DNS名稱:

System.Net.Dns.GetHostName() 

爲了讓您的PC的IP地址使用是這樣的:

var ips = System.Net.Dns.GetHostEntry(hostName); 
       for (var i = 0; i <= ips.AddressList.Length - 1; i++) 
       { 
        if (ips.AddressList[i].AddressFamily == AddressFamily.InterNetwork) 
         return ips.AddressList[i].ToString(); 
       } 
+1

感謝您的回覆。好的,但是我如何讓客戶端知道該機器的特定IP地址傳遞給服務器?我如何得到這個值? – BigBug

+0

@BlueMonster看到我的編輯 – katit

+0

其實不,現在這是如何工作的,這要歸功於NAT。 – TomTom

0

你似乎有點迷茫,也許這將清除它適合你。服務器是唯一知道IP需要知道的人(通常通過DNS名稱來確定,例如chat.mydomain.com或其他)。一旦客戶端擁有該IP地址,客戶端將連接到服務器。客戶不需要知道自己的IP爲了連接。這是自動確定的,並且超出了您的控制範圍。一旦客戶端連接成功,那麼只有這樣你才能開始發送用戶名和密碼等內容。

0

目前,我把本地IP地址,只是連接到我自己。我能夠獲得 我的客戶端和服務器程序來回通信。我的問題是,有沒有一種方法,我 不能要求用戶的IP地址?

聊天軟件的工作原理是通過中央KNOWN服務器運行所有流量。所以,你想在網站上建立一個聊天程序,然後用戶連接到他輸入的服務器(IRC)或硬編碼服務器(MSN)。在第一部分中,不,用戶必須決定在哪裏連接,第二部分是對硬編碼的值進行硬編碼,因此要求如何做到這一點使您看起來不太聰明 - 這是基本的編程。

你沒有找到你的IP地址,因爲這是一個荒謬的方法 - 你的IP甚至在大多數情況下都不可達。您使用CLIENT連接到服務器的方式,並且服務器使用此連接將數據發送到客戶端 - 因爲大多數人都在NAT設備後面,因此他們的計算機無法通過互聯網輕鬆訪問。