728x90

네트워크 프로그래밍 = 소켓 프로그래밍

 

소켓이란 

- 네트워크 연결 도구 (소프트웨어 개념)

- 소켓을 통해 프로그래머는 송수신에 대한 물리적, 소프트웨어적 세세한 내용을 신경 쓰지 않게 된다.

- TCP 소켓은 전화기에 비유될 수 있다.

- 소켓은 socket 함수의 호출을 통해서 생성된다.

- 소켓은 수신 전용, 송신 전용으로 나뉘어 진다.

 

소켓(전화를 받는/서버 측) 설정 순서 (tcp 기준)

1. socekt 함수 호출 - 소켓 생성 (서버 소켓 or 리스닝 소켓이라고 한다)

2. bind 함수 호출 - 주소 할당(ip, port)

3. listen 함수 호출 - 연결 요청이 가능하도록 

4. accpet 함수 호출 - 연결 요청이 왔을 때 요청을 수락하는 기능(미리 호출 되고(블로킹) 전화 올때 반환이 된다. 이때 접속된 클라이언트 연결하는 소켓이 생성된다. )

5. 이후 통신이 가능 상태로 연결된 상태 => 양방향 통신이 가능한 상태가 된다.

 

socket 함수를 호출하면 운영체제가 socket을 만들어 주고 프로그래머가 컨트롤 할수 있도록 숫자값을 반환한다. 이때 이 숫자를 리눅스에서는 descriptor, 윈도우에선 handle로 칭한다. 중요한건 단순히 숫자에 불가 하다는 점이다. 이렇게 획득한 클라이언트 소켓(accept 함수 호출로 얻은)을 통해 클라이언트와 데이터를 주고 받을 수 있다.

728x90

+ Recent posts