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