2009-07-01 78 views
1

我正在運行客戶端/服務器應用程序。我使用文本框讓用戶輸入IP地址和端口。我嘗試使用127.0.0.1連接到服務器,並且沒有問題。之後,我嘗試使用192.168.2.102(此計算機的NAT IP地址),並且失敗。任何想法爲什麼?未連接到C#中的服務器問題

我使用的代碼是:(這個連接的部分)

connect(string IPaddress, int port) 
{ 
    TcpCLient connection = new TcpClient(); 
    connection.Connect(IPaddress, port); 
} 

我與調試檢查,它不使用正確的名稱IP地址和端口。 防火牆應該允許它連接。有點奇怪。

編輯: 我想我知道這個問題。在服務器端,我使用

_listener = new TcpListener(IPAddress.Loopback, 8001); 

而我認爲這就是它只接受來自127.0.0.1的連接的原因。但是,那我應該用什麼呢?我只想從任何IP連接到這個端口。

+1

您可能需要包含有關失敗的更多信息......您會得到什麼異常?怎麼了? – jerryjvl 2009-07-01 14:30:05

+0

「192.168.2.102:8001連接是不可能的,因爲目標計算機主動拒絕了它」。 – Nefzen 2009-07-01 14:34:51

回答

3

如果您指定IPAddress.Loopback,那麼只有127.0.0.1的連接才能工作。將其替換爲IPAddress.Any以通知您的服務器偵聽所有接口。

0

首先,我見過的唯一情況是返回Connection was not possible because the destination computer actively rejected it是實際上沒有監聽指定地址和端口的連接......或者有防火牆。

您可能想要驗證一個tracert192.168.2.102實際上指向您認爲它的位置。另一個選擇是,如果您確實懷疑代碼中存在問題,則可以使用命令行中的telnet連接到地址和端口(儘管我看不到這適用於此)。

附錄:
是否有任何其他應用程序,可以成功地使該同一臺機器上到特定IP地址的連接?