서버
socket() 함수를 이용하여 소켓을 열고,
bind() 함수를 이용하여 ip와 port번호를 설정합니다.
listen()을 통해서 클라이언트들이 접근을 할때 수신 대기열 을 만들어서 몇개의 클라이언트를 대기 시킬지를 설정합니다.
accept() 함수를 이용하여 클라이언트의 연결을 기다립니다.
클라이언트
클라이언트도 socket() 함수를 이용하여 소켓을 엽니다.
connect() 함수를 이용하여 통신 할 서버의 ip와 port번호를 통해서
서버에 통신을 시도 합니다.
클라이언트가 connect()함수로 통신을 시도하면 서버의 accept() 함수가
클라이언트의 소켓 디스크립터(socket descriptor)를 반환하는데
이를 통해서 클라이언트와 서버가 read(), write() 를 통해서 통신을 할 수 있습니다.
통신이 끝나면
클라이언트와 서버는 각각 close() 함수를 통해서 연결을 종료합니다.
소켓 종류
양방향으로 바이트 스트림을 전송하며, 연결 지향성을 띤다.
오류수정, 전송처리, 흐름제어를 보장한다.
송신된 순서에 따라 중복되지 않게 데이터를 수신한다.
TCP를 사용하여 소량의 데이터보다 대량의 데이터 전송에 적합하다.
비연결형 소켓이다.
데이터의 크기에 제한이 있다.
전달이 확실하게 보장되지 않고, 데이터가 손실되어도 오류가 발생하지 않는다.
실시간 멀티미디어 정보를 처리하기 위해 주로 사용한다.
ex) 전화