230316 JAVA_Network

Myung A Lee·2023년 3월 16일
0

JAVA

목록 보기
13/13
post-thumbnail

JAVA

Network

Network란 서로 다른 Computer끼리 서로 연결 되어 있는 망을 의미한다. Network 상에서는 Server와 client가 존재하는데 Server와 Client는 각자의 역할을 수행하기 위해 Ip주소, Port번호, Domain을 알 필요가 있다.

Server 와 Client
Sever는 Client의 요청에 대해 응답하는 역할
Client는 특정 목정을 수행하기 위해 Server에게 요청하는 역할

InetAddress Class

IP 주소를 표현한 클래스로 다음과 같은 주요 메서드를 사용한다.

getLocalhost();

local IP

getByName(String domain);

특정 domain의 Ip

getAllByNames(String host);

domain에 연결된 전체 Ip 얻을 수 있으면 반환 타입은 InetAddress타입의 배열이다.

TCP (Transmission Control Protocol)

TCP는 연결 지향 프로토콜로 데이터를 안전하고 정확하게 전달 하기 위해 반드시 연결을 확인 후 데이터를 전송하는 방식이다. UDP보다 속도가 느리다는 단점이 있다. TCP 연결을 위해서는 Server, Client 모두 소켓이 필요하다.

Socket
ServerScoket : 연결을 수락 해주고 Client로 부터 온 Socket을 얻는다.
Client Scocket : 자신의 정보를 보내 연결을 요청

TCP Sever

  1. ServerSocket을 생성하여 서버를 연다.
    • 요청이 들어올 수 있는 Port 번호를 지정해야한다.
    • ServerSocket server = new ServerSocket(int port);
  2. Client 요청을 대기
    • 요청을 한번만 받는 것이 아니라 요청이 처리 된 후 서버는 계속해서 새로운 요청을 받아야 함을 기억해야한다.
    • While(true){
      / 요청 수락 및 처리 후 자원 반납 /
      }
  3. Client 요청 수락
    • Client에서 Server로 보낸 정보를 Socket에 저장하여 요청을 다룬다.
    • Socket client = server.accept();
  4. Client의 요청에 대한 처리
    • Input/Output Stream 이용
    • InputStream is = client.getInputStream();
    • OutputStream os = client.getOutputStream();
  5. Client Socket 자원 반납
    • 요청에 대한 응답이 완료되면 새로운 요청을 계속 받아야 하므로 자원을 반납해준다.
    • client.close();
  6. 종료
    • 일반적으로 Server는 계속 열려있으며 에러나 예외가 발생했을 때 종료하는 것이 일반 적이다.
    • server.close();

TCP Client

  1. Socket을 생성하여 Server에 접속을 요청한다.
    • 접속할 Server의 host와 포트 번호를 지정해야 한다.
    • Socket client = new Socket(String host, int port);
  2. 접속하여 요청을 보내고 응답을 확인 한다.
    • Input/Output Stream 이용
    • InputStream is = client.getInputStream();
    • OutputStream os = client.getOutputStream();
  3. 응답을 확인 후 자원을 반납한다.
    • 요청 및 응답에 사용한 자원이 있다면 비우고 반납해야 한다.
  4. 종료
    • client.close();

Echo Server

Client 와 Server 가 접속 했다면 Stream 을 통해 data 를 전송 할 수 있다

0개의 댓글