관리 메뉴

프로그래밍 삽질 중

서버와 클라이언트 설명 및 예시(1) - InetAddress 위주 본문

과거 프로그래밍 자료들/자바(Java)

서버와 클라이언트 설명 및 예시(1) - InetAddress 위주

평부 2021. 3. 11. 23:46

※ 서버와 클라이언트

- 서버 : 서비스를 제공하는 프로그램

- 클라이언트 : 서비스를 받는 프로그램

- 서버는 클라이언트보다 미리 실행되어 클라이언트의 요청을 대기

- 클라이언트와 서버가 서로 연결되면 클라이언트의 요청을 서버가 처리해서 클라이언트가 응답

 

※TCP(Transmission Control Protocol)

- 전송되는 모든 데이터는 에러 없이 원격지에 도달 But 느림

※ UDP(User Datagram Protocol)

- 연결 절차를 거치지 않고 발신자가 일방적으로 데이터 발신(빠르게 전달 가능) But 데이터 손실 발생 가능성 있음

 

※ IP 주소

- 컴퓨터에 부여된 유일하게 식별할 수 있는 주소(= 인터넷 주소)

- 네트워크 어댑터마다 할당

 

※ DNS(Domain Name System)

- IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템

- 도메인 : IP주소에 기억하기 좋은 도메인 이름(가상주소) 부여

- DNS 서버 : IP주소를 도메인 이름으로 바꿔 사용(도메인 이름을 IP주소로 변환하는 서버)

 

※ 포트(Port) 번호 

- 컴퓨터 내 응용 프로그램을 식별하는 번호(서버 프로그램은 고정된 포트 번호 사용)

- 클라이언트는 서버 연결 요청 시 IP주소와 Port 같이 제공

- 운영체제는 컴퓨터 내부로 전송된 데이터를 소켓에 분배

- 수신된 데이터 안에 새겨진 Port번호를 참조하여 해당 소켓에 데이터 전달

- 하나의 운영체제 내에서 동일한 Port 번호 할당 불가(단, TCP/UDP 사이에서는 중복 가능)

 

※ InetAddress 클래스

- java.net 패키지

- IP주소를 java.net.InetAddress 객체로 표현(도메인 주소 ↔ IP 변환 가능)

[메소드 이름] 

1) getAllByName(String Host) : 호스트의 모든 IP주소에 대한 정보를 배열로 반환

2) getByAddress(byte[]addr) : 바이트로 표현된 addr에 해당하는 IP정보를 반환

3) getLocalHost() : 로컬호스트의 IP주소에 대한 정보를 반환

 

 

[예1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.net.InetAddress;
import java.net.UnknownHostException;
 
public class LocalIP {
 
    public static void main(String[] args) {
        InetAddress inetaddr = null;
        try {
            inetaddr = InetAddress.getLocalHost(); //로컬 컴퓨터의 InetAddress 얻기
        } catch (UnknownHostException e) {
            System.out.println(inetaddr.getHostName()); //도메인 네임
            System.out.println(inetaddr.getHostAddress()); //IP주소
        }
 
    }
 
}
 
cs