Network

TCP 네트워킹(1)

사랑우주인 2021. 9. 20. 17:03

TCP

- 연결 지향적 프로토콜(=통신을 위해 연결을 우선): 연결을 해야 되기 때문에 시간을 소요 함

- 통신 회로 고정

- 데이터 전달 정확하고 안전(연결을 성공시키면 데이터를 전달하기 때문에)

-TCP를 지원하기 위해 자바에서는 2가지 java.net API 제공: ServerSocket, Socket

 

 

 

서버에서는 연결 수락을 위해 ServerSocket을 사용한다. ServerSocket은 특정 포트를 가지고 실행을 한다. 이것을 바인딩 포트라고 한다. 바인딩이란 서버가 실행될 때 물고 들어가는, 즉 연결이 됨을 의미한다. ServerSocket은 연결요청이 들어올 때까지 대기해야 한다. 해당 메소드는 accpet()이다. accept()는 연결 요청이 들어오면 연결을 수락하는 역할을 한다. accept()는 연결을 수락하고 클라이언트와 통신할 수 있는 Socket 객체를 생성한다. 

 

Server

 

Client

 

Socket 데이터 통신

 

readI()는 상대방이 데이터를 보내기 전까지는 대기 상태이다. 즉, blocking 된다. read()의 blocking 해제되는 경우는 3가지 경우가 있다. 

 

Server

 

Client

 

출처: 이것이 자바다 - 18.7 TCP 네트워킹(1)