🏫 Open API_JAVA

[52일차] 보조 스트림 / 네트워크 기초

Dorothy_YANG 2022. 10. 8. 16:00
728x90

20221006(목)

  • 목차 
    - 보조 스트림
    - 네트워크 기초

< 보조 스트림 > 

  • 보조 스트림
    다른 스트림과 연결되어 여러 가지 편리한 기능을 제공해주는 스트림
    문자 변환, 입출력 성능 향상, 기본 데이터 타입 입출력, 객체 입출력 등의 기능을 제공

  • 보조 스트림 생성
    보조스트림 변수 = new 보조스트림(연결스트림)

  • 보조 스트림 체인 : 다른 보조 스트림과 연결되어 역할 수행 

(1) 문자 변환 보조 스트림
      InputStreamReader 소스 스트림이 바이트 기반 스트림이지만 데이터가 문자일 경우 사용
Reader와 Writer는 문자 단위로 입출력 - 바이트 기반 스트림보다 편리
문자셋의 종류를 지정할 수 있기 때문에 다양한 문자 입출력 가능
      OutputStreamWriter
(2) 성능 향상 보조 스트림
   입출력 성능에 영향을 미치는 입출력 소스
       - 하드 디스크 , 느린 네트워크

   버퍼를 이용한 해결 
       - 입출력 소스와 직접 작업하지 않고 버퍼(buffer)와 작업 실행 ➡ 성능 향상
       - 프로그램은 쓰기 속도 향상
       - 버퍼 차게 되면 데이터를 한꺼번에 하드 디스크로 보내 출력 횟수를 줄여줌
      BufferedInputStream과 BufferedReader 입력 소스 ➡ 미리 버퍼에 데이터를 채워둠 ➡ 고속 읽기
      BufferedOutputStream과 BufferedWriter 고속 전송 ➡ 한번에 버퍼 내용 모두를 전송 ➡ 목적지
(3) 기본 타입 입출력 보조 스트림 입출력 순서를 맞추어 사용
(4) 프린터 보조 스트림 println()은 데이터 끝에 개행문자 추가, printf는 format string 출력
printf() 메소드 사용 방법
   %d : 정수대입  /  %f : 실수대입  /  1$ : 삽입 시 변수 하나로 대입 가능
(5) 객체 입출력 보조 스트림
      ObjectInputStream, ObjectOutputStream 데이타의 특징에 맞게 관리하는 방법, 저장소가 다를 수 밖에 없다.
➡ 저장소와 기법이 각각 설계가 되어있다.
ex) 농구공 가방에 탁구공 보관? 좀 힘들지.. 한 케이스에 모든 공을 때려넣으면,,구조가 엉망이 되지 않을까? 
      직렬화가 가능한 클래스(Serializable) < 객체 직렬화 >
객체는 문자가 아니므로 바이트 기반 스트림으로 데이터 변경 필요
      serialVersionUID 필드 serialVersionUID 필드
- 같은 클래스임을 알려주는 식별자 역할
Serializable 인터페이스 구현
컴파일 시 자동적으로 serialVersionUID 정적 필드 추가
재컴파일하면 serialVersionUID의 값 변경

* 불가피한 수정 있을 경우 
      writeObject()와 readObject() 메소드 writeObject(ObjectOutputStream out)
     - 직렬화 직전 자동 호출 
     - 추가 직렬화할 내용 작성 가능 

readObject(ObjectInputStream in)
     - 역직렬화 직전 자동 호출
     - 추가 역직렬화 내용 작성 가능

 


< 네트워크 기초 > - 챗봇 개념 알려면 알고 있기!

 

(1) 서버와 클라이언트

  • 서버 : 서비스를 제공하는 프로그램(24H) : 항상 미리 준비한다.
                (웹 서버, FTP 서버,  DBMS, 메신저 서버)

  • 클라이언트 : 서비스를 받는 프로그램
                          (웹 브라우저, FTP 클라이언트, 메신저)

  • 클라이언트와 서버 간의 작동 순서
    클라이언트 ➡ 서버에 연결 요청하면 서버에서 연결(TCP 포트 정보가 있어야 함) 수락함
    클라이언트 ➡ 서버에 처리 요청하면 서버에서 처리한 후
    클라이언트에 응답(처리결과) 보냄


(2) IP 주소와 포트(port)

  • IP(Internet Protocol) 주소 : 마치 컴퓨터의 주민번호와 같음
    네트워크상에서 컴퓨터를 식별하는 번호
    XXX. ➡ 옥텟 하나 

  • 포트(port)
    같은 컴퓨터 내에서 프로그램을 식별하는 번호.
    클라이언트는 서버 연결 요청 시 IP주소와 Port 같이 제공. 0~65535 범위의 값을 가짐
    포트 관리하는 프로그램 : 방화벽
더보기

ex) 회사 : 단말기 / 대표전화 : ip / 각 부서(응용프로그램) : TCP 포트

 

하나의 단말기 안에선 자기 자신을 식별하기 위해 IP 번호를 부여한다.
네트워크 망에서 다른 단말기와 통신하기 위해 설정된 것 IP

 

단말기의 동작하는 운영 프로그램들을 컴퓨터 내부에서 번호를 부여함
응용프로그램을 식별하기 위한 번호를 포트라고 한다.


그 내부에서 동작중인 하나하나의 응용프로그램을 관리하기 위해 부여된 번호 : TCP 포트
응용프로그램에 번호를 부여했다~라고 가볍게 보면 된다.


IP와 PORT라는 것이 쌍으로 존재해야 통신이 이루어진다!

 

(3) TCP(Transmission Control Protocol)

  • 프로토콜 (=규칙)
    ex) 한국어 패치가 되어있으니 대화 가능. 나라마다 언어가 다른 것처럼 규칙들이 굉장히 많음.
    컴퓨터와 컴퓨터가 데이터를 통신하기 위해 일련의 약속된 규칙.
    프로토콜은 종류가 많다. 다양한 형태의 프로토콜이 존재한다. 그중 tcp가 잇다.
  • 소켓(Socket)
    소켓을 갖고 있어야 함
    ex) 종이컵 전화기 할 때 그 실과 종이컵 연결 부분 작업을 말함 있어야지 시작함.
    ➡ 쌍방 간의 통신을 하려면 소켓이 있어야 한다❗
728x90