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
	
	Block a user