사용자 도구

사이트 도구


java:network

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:network [2015/05/25 17:28]
kwon37xi
java:network [2019/03/21 16:08] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java Network ====== ====== Java Network ======
 +
 +===== Java Network Property =====
 +  * [[http://docs.oracle.com/javase/6/docs/technotes/guides/net/properties.html|Java network properties]] 6
 +  * [[https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html|Networking Properties]] 8
 +
 +===== DNS Cache =====
 +  * [[http://kwon37xi.egloos.com/4455415|까먹지말자! : JVM의 DNS 캐시]]
 +  * ''networkaddress.cache.ttl'' : DNS Cache 시간. ''-1'' JVM 시작후 영원히
 +  * ''networkaddress.cache.negative.ttl'' : Lookup 에 실패했을 경우 실패 사항에 대한 Cache 시간.
 +  * ''jre/lib/security/java.security'' 파일을 통해 설정 가능.
 +  * Oracle/Open JDK의 경우 ''-Dsun.net.inetaddr.ttl=30'' 처럼 ''sun.net.inetaddr.ttl'' 시스템 프라퍼티로 설정 가능.
 +    * 단, ''networkaddress.cache.ttl''이 설정 돼 있는 경우 ''sun.net.inetaddr.ttl''은 무시된다.
 +  * Java  6/7/8 의 경우 기본값 30초로 돼 있음. [[http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/net/InetAddressCachePolicy.java|OpenJdk 8 InetAddressCachePolicy]]
 +  * static context 에서 코드로 지정해줄 수도 있다.<code java>
 +java.security.Security.setProperty("networkaddress.cache.ttl" , "30");
 +</code>
 +===== Localhost의 IP 주소 목록 뽑기 =====
 +<code java>
 +Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
 +
 +List<String> localIps = Lists.newArrayList();
 +
 +while (networkInterfaces.hasMoreElements()) {
 +    NetworkInterface networkInterface = networkInterfaces.nextElement();
 +    Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
 +
 +    while (inetAddresses.hasMoreElements()) {
 +        InetAddress inetAddress = inetAddresses.nextElement();
 +        if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress() && inetAddress.isSiteLocalAddress()) {
 +            localIps.add(inetAddress.getHostAddress());
 +        }
 +    }
 +}
 +</code>
  
 ===== IP Address match ===== ===== IP Address match =====
줄 42: 줄 76:
 </code> </code>
   * [[http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/util/SubnetUtils.html|Apache Commons net SubnetUtils]]를 사용할 수도 있다.   * [[http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/util/SubnetUtils.html|Apache Commons net SubnetUtils]]를 사용할 수도 있다.
 +
 +===== java.net.URL =====
 +  * [[http://hackeen.tistory.com/18|[java 네트워크 프로그래밍] 6. URL 클래스 :: hackeen]]
 +
 +===== IPv4 강제하기 =====
 +  * 환경에 따라 IPv6를 우선으로 하면서 ''invalid IPv6 address'' 같은 오류가 발생할 수 있는데, 이 경우 System Property로 다음을 지정해야 한다.
 +
 +<code sh>
 +-Djava.net.preferIPv4Stack=true
 +</code>
 +
 +위 항목을 Java Code에서 지정하면 작동하지 않고, ''java'' 명령행에서 지정해야만 한다.
java/network.1432542507.txt.gz · 마지막으로 수정됨: 2015/05/25 17:28 저자 kwon37xi