2012-07-03 125 views
3

所以我目前正在編寫一個簡單的服務器/客戶端來玩我過去做過的一些基本遊戲。TCP服務器/客戶端連接問題C#

的問題是,當我在同一臺計算機上,我只能連接,而不是通過LAN(我想它的工作),這裏是我的工作代碼:

服務器:
IPEndPoint Ep = new IPEndPoint(IPAddress.Any, 8000); listener = new TcpListener(Ep); listener.Start();

客戶:
IPAddress direc = IPAddress.Parse(ipManager); Ep = new IPEndPoint(direc, 8000);

的問題是,當我嘗試從另一臺計算機(連接到同一Wi-Fi明顯)我收到以下錯誤連接:

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.0.5:8000

我也shuold補充說,這是代碼,當我嘗試連接:

Sever的:
TcpClient client = listener.AcceptTcpClient();

客戶:
client.Connect(Ep);

顯然,當我連接服務器從不「接受」連接,但我一直無法弄清楚這是爲什麼。

+1

您使用哪種語言? C++?這是什麼平臺,Windows或Linux? – Claudio

+0

對不起,我忘了提及!它是C#,Visual Studio。我正在研究WPF – waclock

+0

您是否向Windows防火牆添加了異常?嘗試禁用它進行測試並嘗試再次連接,檢查它是否有效。 – LawfulHacker

回答

1

由於本地工作,你可能正在使用127.0.0.1localhost作爲服務器的偵聽接口。嘗試使用0.0.0.0,以便在所有接口上偵聽或指定您希望服務器偵聽的接口的IP地址。

+0

我使用0.0.0.0,仍然沒有:/ – waclock

+0

你有沒有嘗試過這樣的事情? '新的IPEndPoint(IPAddress.Parse(「0.0.0.0」),8000)' – Claudio

+0

你有沒有任何種類的數據包嗅探軟件(例如[Wireshark](http://www.wireshark.org/))服務器電腦?如果你這樣做,你可以嘗試連接並檢查客戶端數據包是否真正到達指定的服務器接口(192。168.0.5)。 – Claudio

1

嘗試使用telnet或netcat連接到端口。檢查端口是否可訪問。

$ nc 192.168.0.5 8000 
$ telnet 192.168.0.5 8000 
+0

如何使用它?對不起,無知:P – waclock

+0

您必須運行該程序,看看發生了什麼。要麼你會得到關於端口關閉的消息(或者在'nc'變體的情況下沒有任何東西),否則你將獲得連接。 –

+0

這是C#,那不是C#嗎? – waclock