구분명 | 범위 | 설명 |
---|---|---|
Well Know Port Numbers | 0~1023 | 국제인터넷 주소관리기구(ICANN)가 특정 애플리케이션용으로미리 예약한 포트 |
Registered Port Numbers | 1024~49151 | 회사에서 등록해서 사용할 수 있는 포트 |
Dynamic Or Private Port Numbers | 49152~65535 | 운영체제가 부여하는 동적 포트 또는 개인적인 목적으로 사용할 수 있는 포트 |
InetAddress local = InetAddress.getLocalHost();
System.out.println("내 컴퓨터의 Host Name : "+ local.getHostName());
System.out.println("내 컴퓨터의 IP 주소 : "+local.getHostAddress());
InetAdress ia = InetAdress.getByName(String Host);
InetAdress[] iaArr = InetAddress.getAllByName(String Host);
String ip = InetAddress.getHostAddress();
6.JavaNetworkTest
T01_InetAddressTest
public class T01_InetAddressTest {
public static void main(String[] args) throws IOException {
//InetAddress클래스 => IP주소를 다루기 위한 클래스
//naver사이트의 ip정보 가져오기
InetAddress naverIp = InetAddress.getByName("www.naver.com"); // 네이버 => 도메인 주소
//호스트 이름은 머신이름, 도메인명, 또는 ip주소 문자열.
System.out.println("Host Name => "+ naverIp.getHostName());
// IP주소에 해당한 호스트 네임을 포함한 String을 반환
System.out.println("Host Address => "+naverIp.getHostAddress());
//getHostAddress() => IP주소를 마침표로 구분된 네자리 형식
System.out.println();
//자기 자신 컴퓨터의 IP주소 가져오기
InetAddress localIp = InetAddress.getLocalHost();//로컬
System.out.println("내 컴퓨터의 Host Name => "+localIp.getHostName());//머신이름
System.out.println("내 컴퓨터의 Host Address => "+localIp.getHostAddress());
System.out.println();
//ip주소가 여러개인 호스트의 정보 가져오기
InetAddress[] naverIps = InetAddress.getAllByName("www.naver.com");//모든 ip주소
for(InetAddress nIp : naverIps) {
System.out.println(nIp.toString());
}
}
}
<protocol> : //<host>:<port>/<path>?<query>#<reference>
http://www.dum.net:80/member/mem.jsp?name=sung#content
public class T02_UrlTest {
public static void main(String[] args) throws MalformedURLException, URISyntaxException {
//URL 클래스 => 인터넷에서 존재하는 서버들의 자원에 접근할 수 있는 주소를 관리하는 클래스
//http://ddit.or.kr:80/index.html?ttt=123
URL url = new URL("http", "ddit.or.kr", 80, "main/index.html?ttt=123&name=bb#kkk");
System.out.println("전체 URL 주소 : http://ddit.or.kr:80/main/index.html?ttt=123&name=bb#kkk");
System.out.println("protocol : "+ url.getProtocol()); //http
System.out.println("host : "+ url.getHost()); //ddit.or.kr
System.out.println("port: "+ url.getPort()); // 80
System.out.println("file : "+ url.getFile()); //쿼리 정보 포함 (port뒤부터 #앞까지)
System.out.println("query : "+ url.getQuery()); //쿼리 (질의) (?물음표 뒤 ~ #<reference>앞까지)
System.out.println("path : "+ url.getPath()); //쿼리 정보 미포함 (물음표 앞까지)
System.out.println("ref: "+ url.getRef()); // 참조 #(샾) 뒷부분
System.out.println(url.toExternalForm());
System.out.println(url.toString());
System.out.println(url.toURI().toString());
//URI 예제
/**
* http://java.sun.com/j2se/1.3/
* docs/guide/collections/designfaq.html#28
* ../../../demo/ifc/src/hello.java
* file:///~/calendar
* mailto:java-net@abc.com
*/
}
}
public class T03_URLConnectionTest {
public static void main(String[] args) throws IOException {
//URLConnection => 애플리케이션과 URL간의 통신 연결을 위한 추상 클래스
//특정 서버 (예:naver 서버)의 정보와 파일 내용을 출력하는 예제
URL url = new URL("https://www.naver.com/index.html"); //예외던짐1(url형식에 맞지 않게 써서)
//Header 정보 가져오기
//URLConnection(추상클래스) 객체 구하기 (?상위 하위 다형성?)
URLConnection urlCon = url.openConnection(); // 예외던짐2 (IO Exception으로 통일댐)
System.out.println("Content-Type : "+ urlCon.getContentType());
System.out.println("Encoding : "+urlCon.getContentEncoding());
System.out.println("Content : "+urlCon.getContent());
System.out.println();
//전체 Header정보 출력하기 => getHeaderFields메소드 이용
Map<String, List<String>> headerMap = urlCon.getHeaderFields();
//Header의 key값 구하기
Iterator<String> iterator = headerMap.keySet().iterator(); // keySet에 순서가 없으니까 iterator로 갖고옴
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + " : " + headerMap.get(key)); //header정보
}
System.out.println("--------------------------------------------여기까지가 Header정보---------------");
//해당 호스트의 페이지 내용 가져오기
//파일 읽어오기 위한 스트림 객체 생성
//방법1 => URLConnection의 getInputStream()메서드 이용하기
//방법2 => URL객체의 openStream()메서드 이용하기
//InputStream is = url.openConnection().getInputStream(); //방법1
InputStream is = url.openStream(); //방법2
InputStreamReader isr = new InputStreamReader(is, "utf-8"); //보조스트림
int c;
while((c = isr.read())!=-1) {
System.out.print((char)c);
}
//스트림 닫기
isr.close();
}
}