add getNetListenAddress method
This commit is contained in:
parent
c97c11fe4b
commit
041ab0034f
|
@ -637,6 +637,46 @@ public class Sigar implements SigarProxy {
|
||||||
public native NetConnection[] getNetConnectionList(int flags)
|
public native NetConnection[] getNetConnectionList(int flags)
|
||||||
throws SigarException;
|
throws SigarException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the TCP listen address for the given port.
|
||||||
|
* If the port is not bound to a specific address,
|
||||||
|
* the loopback address will be returned.
|
||||||
|
* If there is not a listener on the given port, null will be returned.
|
||||||
|
*/
|
||||||
|
public String getNetListenAddress(long port)
|
||||||
|
throws SigarException {
|
||||||
|
|
||||||
|
int flags = NetFlags.CONN_SERVER | NetFlags.CONN_TCP;
|
||||||
|
|
||||||
|
NetConnection[] connections =
|
||||||
|
getNetConnectionList(flags);
|
||||||
|
|
||||||
|
for (int i=0; i<connections.length; i++) {
|
||||||
|
NetConnection conn = connections[i];
|
||||||
|
|
||||||
|
if (conn.getState() != NetFlags.TCP_LISTEN) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conn.getLocalPort() == port) {
|
||||||
|
if (conn.getLocalAddress().equals(NetFlags.ANY_ADDR)) {
|
||||||
|
return NetFlags.LOOPBACK_ADDRESS;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return conn.getLocalAddress();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNetListenAddress(String port)
|
||||||
|
throws SigarException {
|
||||||
|
|
||||||
|
return getNetListenAddress(Long.parseLong(port));
|
||||||
|
}
|
||||||
|
|
||||||
public NetStat getNetStat()
|
public NetStat getNetStat()
|
||||||
throws SigarException {
|
throws SigarException {
|
||||||
return new NetStat(this);
|
return new NetStat(this);
|
||||||
|
|
|
@ -129,6 +129,12 @@ public interface SigarProxy {
|
||||||
public NetConnection[] getNetConnectionList(int flags)
|
public NetConnection[] getNetConnectionList(int flags)
|
||||||
throws SigarException;
|
throws SigarException;
|
||||||
|
|
||||||
|
public String getNetListenAddress(long port)
|
||||||
|
throws SigarException;
|
||||||
|
|
||||||
|
public String getNetListenAddress(String port)
|
||||||
|
throws SigarException;
|
||||||
|
|
||||||
public NetStat getNetStat() throws SigarException;
|
public NetStat getNetStat() throws SigarException;
|
||||||
|
|
||||||
public Who[] getWhoList() throws SigarException;
|
public Who[] getWhoList() throws SigarException;
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package net.hyperic.sigar.test;
|
package net.hyperic.sigar.test;
|
||||||
|
|
||||||
|
import net.hyperic.sigar.NetConnection;
|
||||||
|
import net.hyperic.sigar.NetFlags;
|
||||||
import net.hyperic.sigar.NetStat;
|
import net.hyperic.sigar.NetStat;
|
||||||
import net.hyperic.sigar.Sigar;
|
import net.hyperic.sigar.Sigar;
|
||||||
import net.hyperic.sigar.SigarNotImplementedException;
|
import net.hyperic.sigar.SigarNotImplementedException;
|
||||||
|
@ -23,5 +25,16 @@ public class TestNetStat extends SigarTestCase {
|
||||||
assertGtEqZeroTrace("Outbound", netstat.getTcpOutboundTotal());
|
assertGtEqZeroTrace("Outbound", netstat.getTcpOutboundTotal());
|
||||||
assertGtEqZeroTrace("Inbound", netstat.getTcpInboundTotal());
|
assertGtEqZeroTrace("Inbound", netstat.getTcpInboundTotal());
|
||||||
assertGtEqZeroTrace("Listen", netstat.getTcpListen());
|
assertGtEqZeroTrace("Listen", netstat.getTcpListen());
|
||||||
|
|
||||||
|
int flags = NetFlags.CONN_SERVER | NetFlags.CONN_TCP;
|
||||||
|
|
||||||
|
NetConnection[] connections =
|
||||||
|
sigar.getNetConnectionList(flags);
|
||||||
|
|
||||||
|
for (int i=0; i<connections.length; i++) {
|
||||||
|
long port = connections[i].getLocalPort();
|
||||||
|
traceln("Listen " +
|
||||||
|
sigar.getNetListenAddress(port) + ":" + port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue