java 네트워크에 대한 개념 공부

까만호랭·2023년 8월 1일
1

입출력 I/O란?

컴퓨터의 입력(input)과 출력(output)의 줄임말
I/O 패키지 사용시 항상 예외처리를 해줘야함!! throws문 or try~catch문

Stream이란?

Byte 형태로 데이터를 운반하는데 사용되는 연결통로이기 때문에 하나의 스트림으로 입출력이 동시에 안된다는 것이 특징이다.(A에서 B로 가는 배관)
자바에서 처리 단위에 따라 Reader-inputstream, Writer-outputstream으로 나뉘는데
inputstrem은 System.in을, outputstream은 System.out을 사용한다.
또한 inputstream, outputstream을 사용하기 위해 import을 사용해야한다.

printwriter : 개체의 형식화된 표현을 텍스트 출력 스트림이며 모든 출력 메소드를 구현
inputstreamreader : inputstream을 통해 입력을 받아도 1byte만 받기 때문에 한글이 깨져 이상한 문자로 출력되는데 이를 해결하기 위해 확장되어 사용되는 것이 inputstreamreader이다.

Buffer란?

Buffer는 입출력이 동시에 되지 않는 Stream의 상위버전 같은 느낌이다.
즉 , A와 B가 입출력을 수행하는데 있어서 속도차이를 극복하기 위해 사용되는 임시 저장 공간이다. (빠른 입출력을 위해 사용)
또한 고정적인 값이 아닌 가변적인 값을 받기 때문에 메모리 공간에 있어서도 효율적인 사용이 가능하다는 장점이 있다.
&& 데이터를 한번에 옮기기 때문에 전송 속도도 빠르다
BufferReader를 통해 입력받고 BUfferWriter의 Wirter()를 통해 저장 되어있던 값들을 한번에 출력한다.

bufferedreader : scanner처럼 입력받기 위한건데 scanner보다 속도가 빨라서 자주 사용함 && return 데이터의 값이 String으로 정해져 있어서 다른 데이터로 받고 싶으면 형변환을 해줘야함!!
bufferedwriter : system.out.println()같은건데 많은 양을 한번에 출력할때 사용

Network란?

서로 다른 장치가 연결을 주고받는 행위 (그 장치를 주로 host라 부름)

protocal란?

통신의 전송규약이다. 꼭 지켜야 할?? 그런 것

TCP, UDP란?

TCP : 두 컴퓨터의 통신상태를 확인해서 양호하면 보내는 방식
예) A가 B에게 전화를 걸고 B가 그 전화를 수신받았다는 행위
UDP : 확인안하고 그냥 보냄 ( 방송국 -> 집 tv, 메일)

PORT란?

같은 컴퓨터 내에서 프로그램을 식별하는 번호
A서버에서 5000 포트로 데이터를 B에게 보내는데 컴퓨터가 5000이라는 포트번호를 보고 실행중인 5000 포트 프로그램을 찾아 데이터를 전송해주는 느낌
포트번호 : 0~65535번 까지 존재하며, 1024~부터 사용가능

SOCKET이란?

소켓의 큰 틀에는 프로토콜, IP주소, 포트 넘버 등이 있으며 프로그램이 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부이다.
&& 각각의 클라이언트마다 소켓들이 통신

소켓통신(서버와 클라이언트 연결)

  1. 클라이언트 서버 클래스를 생성
  2. 서버 클라이언트 Socket 객체를 생성 후 try~catch문을 통해 예외처리를 함
  3. Socket 클래스를 사용하여 IP주소와 포트 번호(7777)를 지정하여 소켓을 생성
  4. PrintWriter 클래스를 사용하여 소켓의 출력 스트림을 얻음 (서버에 데이터 보내기) && PrintWriter 클래스 생성자에 두 개의 매개변수를 전달 (true면 버퍼를 비우지 않고 데이터를 즉시 전송)
  5. 상대방에게 바로 Hi I'am seoho 출력됨
  6. out, socket close()메소드를 통해 닫아주기

  1. ServerSocket클래스의 객체인 ss, Socket클래스의 객체인 socket 생성 (null값)
  2. ss에 7777 포트 번호로 서버 소켓을 생성
  3. accept() 메소드를 통해 서버가 클라이언트의 접속을 기다리가 접속이 되면 socket객체를 반환
    이때 반환된 socket 객체는 기존에 null값이었다가 ss.accept()로 새롭게 생성된것

ServerSocket 객체 : 서버소켓은 특정포트에서 클라이언트의 연결을 기다림
접속이 되면 accept() 메소드를 통해 클라이언트와 통신할 수 있는 Socket 객체를 반환
Socket 객체 : 클라이언트와 서버 간의 통신을 담당하는 객체

서버프로그램 동작 순서
1. 서버 소켓을 생성하고 특정 포트 번호, ServerSocket 생성자 호출
2. ServerSocket의 accept() 메서드를 호출
3. 접속되면 Socket 객체를 새롭게 생성 후 반환
4. 반환된 Socket 객체를 이용하여 클라이언트와 데이터를 주고받기 가능

profile
남들과 함께 발자국을 남기는 까만호랭

4개의 댓글

comment-user-thumbnail
2023년 8월 1일

좋은 정보 감사합니다

1개의 답글
comment-user-thumbnail
2023년 8월 1일

좋은 글 잘봤습니당!

1개의 답글