{"id":3301,"date":"2016-03-10T01:20:42","date_gmt":"2016-03-09T23:20:42","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=3301"},"modified":"2016-03-10T01:20:42","modified_gmt":"2016-03-09T23:20:42","slug":"retrieve-windows-netstat-data-and-observe-new-network-connections","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2016\/03\/retrieve-windows-netstat-data-and-observe-new-network-connections\/","title":{"rendered":"Retrieve Windows netstat data and observe new network connections"},"content":{"rendered":"<pre>import java.io.IOException;\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.regex.Pattern;\r\n\r\npublic class Netstat {\r\n\r\n  public static class Protocol {\r\n\r\n    public final String protocol;\r\n    public final String localAddress;\r\n    public final String remoteAddress;\r\n    public final String status;\r\n\r\n    public Protocol( String protocol, String localAddress, String remoteAddress, String status ) {\r\n      this.protocol = protocol;\r\n      this.localAddress = localAddress;\r\n      this.remoteAddress = remoteAddress;\r\n      this.status = status;\r\n    }\r\n\r\n    @Override\r\n    public int hashCode() {\r\n      return Objects.hash( localAddress, protocol, remoteAddress, status );\r\n    }\r\n\r\n    @Override\r\n    public boolean equals( Object obj ) {\r\n      if ( this == obj )\r\n        return true;\r\n      if ( obj == null )\r\n        return false;\r\n      if ( getClass() != obj.getClass() )\r\n        return false;\r\n      Protocol other = (Protocol) obj;\r\n      if ( localAddress == null &amp;&amp; other.localAddress != null )\r\n        return false;\r\n      else if ( !localAddress.equals( other.localAddress ) )\r\n        return false;\r\n      if ( protocol == null &amp;&amp; other.protocol != null )\r\n        return false;\r\n      else if ( !protocol.equals( other.protocol ) )\r\n        return false;\r\n      if ( remoteAddress == null &amp;&amp; other.remoteAddress != null )\r\n        return false;\r\n      else if ( !remoteAddress.equals( other.remoteAddress ) )\r\n        return false;\r\n      if ( status == null &amp;&amp; other.status != null )\r\n        return false;\r\n      else if ( !status.equals( other.status ) )\r\n        return false;\r\n      return true;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n      return String.format( \"%-6s %-22s %-22s %s\", protocol, localAddress, remoteAddress, status );\r\n    }\r\n  }\r\n\r\n  private final static Pattern pattern = Pattern.compile( \"(TCP|UDP)\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+(\\\\S+)\" );\r\n\r\n  public static Collection&lt;Protocol&gt; netStat() throws IOException {\r\n    Collection&lt;Protocol&gt; result = new ArrayList&lt;&gt;();\r\n    Process p = new ProcessBuilder( \"netstat\", \"-n\" ).start();\r\n    try ( Scanner scanner = new Scanner( p.getInputStream() ) ) {\r\n      while ( scanner.findWithinHorizon( pattern, 0 ) != null )\r\n        result.add( new Protocol( scanner.match().group( 1 ), scanner.match().group( 2 ),\r\n                                   scanner.match().group( 3 ), scanner.match().group( 4 ) ) );\r\n    }\r\n    return result;\r\n  }\r\n\r\n  public static void main( String[] args ) throws IOException, InterruptedException {\r\n    Set&lt;Protocol&gt; oldStat = new HashSet&lt;&gt;( netStat() );\r\n\r\n    while ( true ) {\r\n      TimeUnit.SECONDS.sleep( 10 );\r\n\r\n      HashSet&lt;Protocol&gt; newStat = new HashSet&lt;&gt;( netStat() );\r\n\r\n      Set&lt;Protocol&gt; differenceSet = new HashSet&lt;&gt;( newStat );\r\n      differenceSet.removeAll( oldStat );\r\n\r\n      for ( Protocol p : differenceSet )\r\n        System.out.println( p );\r\n\r\n      oldStat = newStat;\r\n    }\r\n  }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; public class Netstat { public static class Protocol { public final String protocol; public final String localAddress; public final String remoteAddress; public final String status; public Protocol( String protocol, String localAddress, String remoteAddress, String status ) { this.protocol = protocol; this.localAddress = localAddress; this.remoteAddress = remoteAddress; this.status [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[68],"tags":[],"class_list":["post-3301","post","type-post","status-publish","format-standard","hentry","category-snippet"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=3301"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3301\/revisions"}],"predecessor-version":[{"id":3302,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3301\/revisions\/3302"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=3301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=3301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=3301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}