2011-08-06 105 views
0

這是我的問題陳述:Java的插座服務器客戶端方案

一個多線程服務器發送週期性消息「任何客戶那裏」。客戶端機器需要回復消息,以證明客戶端確實存在於特定IP上。

疑惑:

這是我應該如何着手?

  1. 客戶端發送出的多播消息。在客戶端計算機沒有客戶 2.Assuming就是不聽,即沒有程序在客戶端上運行的特定端口上,我該怎麼辦呢?
  2. 如果2是不可能的,我怎麼知道有客戶我的網絡上(沒有在客戶端上運行的程序)?請不要建議ZeroConf,因爲我無法在此處通過以太網電纜。

事實上,我很好奇一個簡單的網絡發現程序如何能夠列出網絡上的所有其他計算機,而無需在客戶端上運行任何程序。我應該使用Java Ping()嗎?

+0

你試圖發現,揭露一些服務機器通常,這樣的服務(不管它是什麼)可以播放活動消息(多播可能) – Kevin

回答

3

找出特定客戶端是否存在的最簡單方法是在InetAddress上使用isReachable()方法,它幾乎爲您做了所有事情(您只需指定超時值。)上面的javadoc鏈接對其工作原理提供了一些見解。 This給出了一些選擇,如果你預先Java 5中(或者只是想實現自己的東西。)

爲多個客戶,看看here它展示瞭如何在服務器端廣播到一個特定的羣體。

+0

@ berry120-謝謝!但是,像虛擬機管理器這樣的應用程序(因爲我正在使用它)如何發現我局域網上的其他計算機。請問算法中相似:使用isReachable(),查出IP地址的所有機器(又名廣播數據包)的,因此得到活着的機器和執行的操作?原諒我的無知,我是新手,無法編程。 –

+0

@ Kevin-我的服務器程序必須找到我局域網上的所有物理機器。當我在任何網絡上的任何機器上運行程序時,這應該是可能的。應該沒有客戶端程序。 –