2010-08-03 66 views
6

我的服務文件(C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ etc \ services中)具有服務映射了一堆港:端口到Java中的服務名稱?

echo    7/tcp 
echo    7/udp 
discard    9/tcp sink null 
discard    9/udp sink null 
systat    11/tcp users     #Active users 
systat    11/udp users     #Active users 
daytime   13/tcp 
daytime   13/udp 
qotd    17/tcp quote     #Quote of the day 
qotd    17/udp quote     #Quote of the day 
chargen   19/tcp ttytst source   #Character generator 

我試圖找到一種方法,從一個端口轉換到服務通過Java API(而不是解析)或第三方庫以編程方式命名?

僞代碼:

Port port = new Port("443","tcp"); 
String service = port.getService(); 
System.out.println(service); //prints "https" 

有沒有做到這一點沒有什麼好的辦法?

+0

+1結構良好的queston – 2010-08-03 04:22:27

回答

2

你所尋找的是一個Java實現的Linux getservbyport()系統調用。看看http://github.com/wmeissner/jnr-netdb。另外,做一個谷歌搜索java getservbyport

+0

它試圖儘可能使用原生函數,下降回到直接解析 /etc/services,最後到一個內置的表格,用於 的環境中,在這個環境中本地代碼和文件系統都不可能訪問。 – YoK 2010-08-03 08:40:40

0

我不認爲java中有一些API用於此目的。 您將需要解析此文件或以某種形式維護端口服務映射(屬性文件,db等)。 例如,從系統文件來分析是:

http://www.javafaq.nu/java-example-code-162.html

+0

我認爲這個請求是針對不涉及解析/ etc/services文件的解決方案 – 2010-08-03 03:27:15

相關問題