2013-10-11 36 views
0

我正在用C#編寫一個程序,該程序基本上用於一個簡單目的。它應該像客戶端的服務器一樣ping。此服務器程序僅用於通過返回ping請求來確定計算機是否仍在運行。除了響應ping請求之外,我不需要程序將任何信息發送回客戶端。簡單的ping響應是足夠的信息來確認運行應用程序的計算機仍在運行。只用於ping的C#簡單服務器

我目前正在通過使用TCP服務器/客戶端來解決這個問題。但是,似乎我無法連接到TCP服務器。這是因爲服務器需要打開端口80才能ping通?我的TCP服務器代碼是圍繞這個主題,我發現:

Send/Receive Bytes using TCP Sockets over internet (possibly using static IP)

有什麼本質上錯方法?還是有更簡單的方法來創建這個簡單的服務器,只需要接受和響應ping請求?

+2

您不需要服務器,以便計算機響應ping請求。 –

+0

我以爲計算機需要積極監聽ping請求才能做出響應?因爲如果我只是簡單地ping我的電腦的IP地址,我得不到任何迴應和100%的數據包數據丟失。那是因爲防火牆設置還是端口? – Generalkidd

+0

我認爲它可以是防火牆設置,不允許ping。但是,你甚至不能ping你自己的計算機的ip地址(例如127.0.0.1)? – rcs

回答

3

你在客戶端做什麼? 在控制檯上調用ping?這不起作用,因爲ping不是基於TCP。 如果你正在解決這個代碼,你的客戶端將不得不在TCP端口9999上連接以獲得任何響應 - >所以你還需要在客戶端開發一個特殊的ping應用程序。客戶端也不能發送任何東西(如ping),因爲服務器只接受客戶端,發送某物。然後關閉連接。

默認的ping機制(基於ICMP)應該已經可以通過您的操作系統使用,並且足以滿足您的使用情況。它不在嗎? 這可能與一些以太網設置或防火牆有關。

+0

好吧,如果我忽略TCP並只使用默認的ping機制,ping請求的端口來自哪裏?無論是通過互聯網還是本地網絡,我都無法從其他計算機上ping我的計算機。 – Generalkidd

+0

ping使用ICMP數據包,並且不使用任何端口號。以下是關於它的更多詳細信息:http://en.wikipedia.org/wiki/Ping_%28networking_utility%29 如果您無法從另一臺PC ping通它在網絡中,這很可能是PC上的防火牆問題。 ping不從網絡運行是正常的,因爲你的路由器不知道在哪裏發送ping數據包,並且會直接丟棄它。 – Matthias247

+0

所以如果我想從互聯網上ping,我需要在IIS中設置一個Web服務器或類似的東西,所以路由器知道在哪裏發送ping請求? – Generalkidd

0

您可以在特定端口上的服務器上打開套接字,然後嘗試使用您的客戶端連接到它,就像您發佈的鏈接一樣。