티스토리 뷰

개발을 하다 보면 IP 처리를 위한 여러 가지 작업을 할 때가 있습니다. 그럴 경우 사용 가능한

CIDR 주소체계에 대한 계산을 해주는 유틸 클래스가 있어 소개해 보려 합니다.

해당 CIDR의 시작 IP, 끝IP, Broadcast IP, Network IP,IP 포함 여부등을 확인할 수 있습니다.


SubnetUtils


maven
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.6</version>
</dependency>

SubnetTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package subnet;
 
import org.apache.commons.net.util.SubnetUtils;
 
public class SubnetTest {
    public static void main(String[] args) {
 
        SubnetUtils subnetUtils = new SubnetUtils("120.131.5.130/26");
        subnetUtils.setInclusiveHostCount(true);    //network,broadcast ip 포함, false:불포함
 
        System.out.println("넷마스크:" + subnetUtils.getInfo().getNetmask());
        System.out.println("네트워크 IP:" + subnetUtils.getInfo().getNetworkAddress());
        System.out.println("브로드캐스트 IP:" + subnetUtils.getInfo().getBroadcastAddress());
 
        System.out.println("시작 IP:" + subnetUtils.getInfo().getLowAddress());
        System.out.println("끝 IP:" + subnetUtils.getInfo().getHighAddress());
        System.out.println("120.131.5.130 해당 대역의 포함여부: " + subnetUtils.getInfo().isInRange("120.131.5.130"));
        System.out.println("120.131.5.234 해당 대역의 포함여부: " + subnetUtils.getInfo().isInRange("120.131.5.234"));
        String[] allAddresses = subnetUtils.getInfo().getAllAddresses();
        System.out.println("===사용가능한 IP 리스트 시작===");
        for (String allAddress : allAddresses) {
            System.out.println(allAddress);
        }
    }
}
 
cs

subnetUtils.setInclusiveHostCount(true) 라인의 true, false 옵션에 따라 network, boardcast IP 포함 여부를 결정할 수 있습니다.


OUTPUT

넷마스크:255.255.255.192

네트워크 IP:120.131.5.128

브로드캐스트 IP:120.131.5.191

시작 IP:120.131.5.128

끝 IP:120.131.5.191

120.131.5.130 해당 대역의 포함여부: true

120.131.5.234 해당 대역의 포함여부: false

===사용가능한 IP 리스트 시작===

120.131.5.128

120.131.5.129

120.131.5.130

120.131.5.131

120.131.5.132

120.131.5.133

120.131.5.134

120.131.5.135

120.131.5.136

120.131.5.137

120.131.5.138

120.131.5.139

120.131.5.140

120.131.5.141

120.131.5.142

120.131.5.143

120.131.5.144

120.131.5.145

120.131.5.146

120.131.5.147

120.131.5.148

120.131.5.149

120.131.5.150

120.131.5.151

120.131.5.152

120.131.5.153

120.131.5.154

120.131.5.155

120.131.5.156

120.131.5.157

120.131.5.158

120.131.5.159

120.131.5.160

120.131.5.161

120.131.5.162

120.131.5.163

120.131.5.164

120.131.5.165

120.131.5.166

120.131.5.167

120.131.5.168

120.131.5.169

120.131.5.170

120.131.5.171

120.131.5.172

120.131.5.173

120.131.5.174

120.131.5.175

120.131.5.176

120.131.5.177

120.131.5.178

120.131.5.179

120.131.5.180

120.131.5.181

120.131.5.182

120.131.5.183

120.131.5.184

120.131.5.185

120.131.5.186

120.131.5.187

120.131.5.188

120.131.5.189

120.131.5.190

120.131.5.191


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크