클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신한다.
실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓
SERVER | CLIENT |
---|---|
socket() 소켓 통신을 위한 소켓 생성 | socket() 소켓 통신을 위해 가장 먼저 소켓 생성 |
bind() 소켓에 주소 할당 (ip, port 번호 설정) | connect() 서버로 연결 요청(통신 할 서버의 ip, port에 통신 시도) |
listen() 연결 요청 대기 (수신 대기열 만들어 몇 개의 클라이언트를 대기 시킬지 결정) | |
acccept() 연결 승인 | |
read() 클라이언트로 부터 데이터 수신 | read() 서버로 부터 데이터 수신 -반복 |
write() 클라이언트로 데이터 송신 | write() 서버로 부터 데이터 송신 -반복 |
close() 서버 종료 | close() 연결 종료 |
TCP | UDP |
---|
| 양방향으로 바이트 스트림을 전송
→ 연결 지향성 | 비연결형 소켓 |
| 소량의 데이터보다 대량의 데이터에 적합 | 데이터의 크기에 제한이 있다 |
| 송신된 순서에 따라 중복되지 않게 데이터를 수신
→ 오버헤드 발생 | 확실하게 전달이 보장되지 않는다
→ 데이터가 손실되는 경우에도 오류가 발생되지 않는다. |
| 오류 수정, 전송 처리, 흐름제어 보장 | 실시간 멀티미디어 정보 처리에 주로 사용 EX) 전화 |