add getServiceName method
This commit is contained in:
parent
3d0dc203d8
commit
29087cf649
|
@ -1,13 +1,93 @@
|
|||
package net.hyperic.sigar;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
public class NetPortMap {
|
||||
|
||||
private static Map udpServices = null;
|
||||
private static Map tcpServices = null;
|
||||
|
||||
private static void parseServices(String type, Map services) {
|
||||
File file = new File("/etc/services");
|
||||
if (!file.exists()) {
|
||||
return;
|
||||
}
|
||||
|
||||
BufferedReader reader = null;
|
||||
|
||||
try {
|
||||
reader = new BufferedReader(new FileReader(file));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String name, protocol;
|
||||
Long port;
|
||||
|
||||
line = line.trim();
|
||||
if ((line.length() == 0) || (line.charAt(0) == '#')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
StringTokenizer st = new StringTokenizer(line, " \t/#");
|
||||
if (st.countTokens() < 3) {
|
||||
continue;
|
||||
}
|
||||
name = st.nextToken().trim();
|
||||
String pnum = st.nextToken().trim();
|
||||
protocol = st.nextToken().trim();
|
||||
if (!type.equals(protocol)) {
|
||||
continue;
|
||||
}
|
||||
services.put(Long.valueOf(pnum), name);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
return;
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException e) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String getServiceName(String protocol, long port) {
|
||||
if (protocol.equals("tcp")) {
|
||||
return getTcpServiceName(port);
|
||||
}
|
||||
else if (protocol.equals("udp")) {
|
||||
return getUdpServiceName(port);
|
||||
}
|
||||
else {
|
||||
return String.valueOf(port);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getTcpServiceName(long port) {
|
||||
if (tcpServices == null) {
|
||||
tcpServices = new HashMap();
|
||||
parseServices("tcp", tcpServices);
|
||||
}
|
||||
return (String)tcpServices.get(new Long(port));
|
||||
}
|
||||
|
||||
public static String getUdpServiceName(long port) {
|
||||
if (udpServices == null) {
|
||||
udpServices = new HashMap();
|
||||
parseServices("udp", udpServices);
|
||||
}
|
||||
return (String)udpServices.get(new Long(port));
|
||||
}
|
||||
|
||||
/**
|
||||
* Map listening tcp ports to connected remote addresses.
|
||||
* key == Listening tcp port on the local machine.
|
||||
|
@ -66,6 +146,6 @@ public class NetPortMap {
|
|||
Long port = (Long)entry.getKey();
|
||||
List addresses = (List)entry.getValue();
|
||||
System.out.println(port + "=" + addresses);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue