컴퓨터의 입력(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는 입출력이 동시에 되지 않는 Stream의 상위버전 같은 느낌이다.
즉 , A와 B가 입출력을 수행하는데 있어서 속도차이를 극복하기 위해 사용되는 임시 저장 공간이다. (빠른 입출력을 위해 사용)
또한 고정적인 값이 아닌 가변적인 값을 받기 때문에 메모리 공간에 있어서도 효율적인 사용이 가능하다는 장점이 있다.
&& 데이터를 한번에 옮기기 때문에 전송 속도도 빠르다
BufferReader를 통해 입력받고 BUfferWriter의 Wirter()를 통해 저장 되어있던 값들을 한번에 출력한다.
bufferedreader : scanner처럼 입력받기 위한건데 scanner보다 속도가 빨라서 자주 사용함 && return 데이터의 값이 String으로 정해져 있어서 다른 데이터로 받고 싶으면 형변환을 해줘야함!!
bufferedwriter : system.out.println()같은건데 많은 양을 한번에 출력할때 사용
서로 다른 장치가 연결을 주고받는 행위 (그 장치를 주로 host라 부름)
통신의 전송규약이다. 꼭 지켜야 할?? 그런 것
TCP : 두 컴퓨터의 통신상태를 확인해서 양호하면 보내는 방식
예) A가 B에게 전화를 걸고 B가 그 전화를 수신받았다는 행위
UDP : 확인안하고 그냥 보냄 ( 방송국 -> 집 tv, 메일)
같은 컴퓨터 내에서 프로그램을 식별하는 번호
A서버에서 5000 포트로 데이터를 B에게 보내는데 컴퓨터가 5000이라는 포트번호를 보고 실행중인 5000 포트 프로그램을 찾아 데이터를 전송해주는 느낌
포트번호 : 0~65535번 까지 존재하며, 1024~부터 사용가능
소켓의 큰 틀에는 프로토콜, IP주소, 포트 넘버 등이 있으며 프로그램이 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부이다.
&& 각각의 클라이언트마다 소켓들이 통신
- 클라이언트 서버 클래스를 생성
- 서버 클라이언트 Socket 객체를 생성 후 try~catch문을 통해 예외처리를 함
- Socket 클래스를 사용하여 IP주소와 포트 번호(7777)를 지정하여 소켓을 생성
- PrintWriter 클래스를 사용하여 소켓의 출력 스트림을 얻음 (서버에 데이터 보내기) && PrintWriter 클래스 생성자에 두 개의 매개변수를 전달 (true면 버퍼를 비우지 않고 데이터를 즉시 전송)
- 상대방에게 바로 Hi I'am seoho 출력됨
- out, socket close()메소드를 통해 닫아주기
- ServerSocket클래스의 객체인 ss, Socket클래스의 객체인 socket 생성 (null값)
- ss에 7777 포트 번호로 서버 소켓을 생성
- accept() 메소드를 통해 서버가 클라이언트의 접속을 기다리가 접속이 되면 socket객체를 반환
이때 반환된 socket 객체는 기존에 null값이었다가 ss.accept()로 새롭게 생성된것
ServerSocket 객체 : 서버소켓은 특정포트에서 클라이언트의 연결을 기다림
접속이 되면 accept() 메소드를 통해 클라이언트와 통신할 수 있는 Socket 객체를 반환
Socket 객체 : 클라이언트와 서버 간의 통신을 담당하는 객체
서버프로그램 동작 순서
1. 서버 소켓을 생성하고 특정 포트 번호, ServerSocket 생성자 호출
2. ServerSocket의 accept() 메서드를 호출
3. 접속되면 Socket 객체를 새롭게 생성 후 반환
4. 반환된 Socket 객체를 이용하여 클라이언트와 데이터를 주고받기 가능
좋은 정보 감사합니다