我建立了一個簡單的客戶端/服務器系統,但由於某些原因,客戶端不會通過互聯網連接。我讓他們在同一臺機器上進行通信,使用本地主機地址(127.0.0.1)和我的局域網IP地址(192.168.2.2)。客戶端不通過互聯網連接到服務器
我也確認端口是打開使用http://www.whatsmyip.org/ports/,當我使用這個站點時,服務器上會觸發回調函數,所以我假設服務器正常工作。
但是,當我嘗試從我的客戶端連接到相同(互聯網)IP地址/端口時,服務器檢測不到任何內容,並且客戶端在OnConnect回調中引發異常。我注意到,ClientConnect的RemoteEndPoint屬性沒有被BeginConnect語句正確設置 - 當我看它時拋出一個SocketException(10057)。 (當通過LAN地址連接,它工作正常。)
private void ConnectToServer()
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse(txtIPAddress.Text);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Convert.ToInt32(txtPort.Text));
clientSocket.BeginConnect(ipEndPoint, new AsyncCallback(OnConnect), null);
}
什麼能阻止客戶端通過外部IP地址連接到服務器,因爲它可以通過局域網IP地址連接和服務器通過互聯網接受連接?
我正在使用Windows 7和.NET 3.0。
任何意見感激讚賞。謝謝。
你檢查了你的filewall設置嗎?確保端口對傳入連接開放。 – TJHeuvel
如果你可以通過一些IP地址而不是其他的連接,這不是一個真正的編程問題。 – paxdiablo
是的,港口是開放的。參見上文第2段。 – Xobbo