네트워킹

dev_hnbm·2023년 11월 14일
0

대덕인재개발원

목록 보기
17/30

💻 InetAddress

  • 네트워크 연결 및 통신을 위해 IP 주소와 호스트 이름을 나타내는데 사용되는 클래스
  • 네트워크 작업은 예외가 발생할 수 있기 때문에 적절한 예외 처리 필요

🟢 주요 메소드

  • getLocalHost(): 현재 시스템의 로컬 호스트에 해당하는 InetAddress 객체 반환, 현재 컴퓨터의 IP 주소와 호스트 이름을 얻을 수 있음
  • getByName(String host): 주어진 호스트 이름에 해당하는 InetAddress 객체 반환, 호스트는 호스트 이름이나 IP 주소를 나타냄
  • getHostName(): InetAddress 객체에 연결된 호스트 이름 반환
  • getHostAddress(): InetAddress 객체에 연결된 IP 주소 반환
  • toString(): InetAddress 객체의 문자열 표현 반환, 문자열에는 IP 주소와 호스트 이름 포함
  • getAllByName(String host): 호스트 이름에 대한 모든 IP 주소를 배열로 반환

예제

InetAddress naver = InetAddress.getByName("www.naver.com");
System.out.println("[[ naver ]]");
System.out.println("HostName: " + naver.getHostName());
System.out.println("HostAddress: " + naver.getHostAddress());
System.out.println("toString: " + naver.toString());

System.out.println();

InetAddress myPC = InetAddress.getLocalHost();
System.out.println("[[ my PC ]]");
System.out.println("HostName: " + myPC.getHostName());
System.out.println("HostAddress: " + myPC.getHostAddress());
System.out.println("toString: " + myPC.toString());

System.out.println();

System.out.println(" [[ 모든 IP 주소 배열로 받기 ]] ");
InetAddress[] ipArr = InetAddress.getAllByName("www.naver.com");
for(InetAddress data : ipArr) {
  System.out.println(data);
}




📡 URL

  • Uniform Resource Locator(URL)을 나타내기 위한 클래스
  • URL: 인터넷 상에서 자원의 위치를 가리키는 문자열
  • 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소를 다룸

🟠 객체 생성

URL url = new URL("https://www.example.com:8080/path/to/resource?param=value");
  • 프로토콜://호스트:포트/경로?쿼리
    • 프로토콜: https
    • 호스트: www.example.com
    • 포트: 8080
    • 경로: /path/to/resource
    • 쿼리: param=value

🟢 주요 메소드

  • getProtocol(): URL의 프로토콜 반환
  • getHost(): URL의 호스트 반환
  • getPort(): URL의 포트 번호 반환
  • getFile(): URL의 파일 반환
  • getPath(): URL의 경로 반환
  • getQuery(): URL의 쿼리 문자열 반환
  • toExternalForm(): URL 객체를 외부 형태의 문자열로 변환하여 반환
    • (URL 객체의 완전한 URL 주소를 포함하며 프로토콜, 호스트, 경로, 쿼리 등 포함)

예제

URL url = new URL("https", "ddit.or.kr", 80, "/test/index.php?name=hong&age=30#test");

System.out.println("프로토콜: " + url.getProtocol());
System.out.println("호스트: " + url.getHost());
System.out.println("포트: " + url.getPort());
System.out.println("파일: " + url.getFile());
System.out.println("경로: " + url.getPath());
System.out.println("쿼리: " + url.getQuery());
System.out.println("외부 형태 문자열: " + url.toExternalForm());




🔌 URLConnection

  • URL을 통해 원격 서버와 통신하고 데이터를 송수신할 수 있게 하는 클래스
  • 웹 페이지의 내용을 읽거나 파일을 다운로드하거나 업로드 할 때 사용

🟢 주요 메소드

  • openConnection(): URL 객체에서 URLConnection 객체를 얻어옴, URL 객체가 생성되어 있어야 함
  • getHeaderFields(): 연결된 리소스의 모든 헤더 필드를 맵 형태로 반환
  • openStream(): 연결된 리소스로부터 입력 스트림을 얻어옴
    • 주로 웹 페이지의 내용을 읽을 때 사용

예제 (Header 정보)

URL url = new URL("https://www.ddit.or.kr/index.php");
URLConnection urlCon = url.openConnection();

// Header 정보 알아보기
Map<String, List<String>> headerMap = urlCon.getHeaderFields();

for(String key : headerMap.keySet()) {
  System.out.println(key + " : " + headerMap.get(key));
}

System.out.println("-------------------------------------------------");

예제 (URL에 지정한 문서 내용 가져오기1)

  • URLConnection 객체 이용
InputStream in = urlCon.getInputStream();
InputStreamReader isr = new InputStreamReader(in, "UTF-8");
BufferedReader br = new BufferedReader(isr);

while(true) {
  String str = br.readLine();
  if(str == null) break;
  System.out.println(str);
}

br.close();

예제 (URL에 지정한 문서 내용 가져오기2)

  • URL 객체의 openStream() 이용
InputStream isr = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(isr, "UTF-8"));

while(true) {
  String str = br.readLine();
  if(str == null) break;
  System.out.println(str);
}

br.close();

0개의 댓글