TCP/IP의 Server & Client는 떨어져 존재하는 서로다른 컴퓨터이다.
Client는 기본적으로 서비스를 요청하는 주체이며, Server는 Client에 서비스를 제공하는 역할을 한다.
소개팅을 앞 둔 남녀로 보이기도 한다. ( ? )
이 둘의 약속장소는 Network address로 결정이 되며,
여기에는 hostname, port number, ip, protocol 등등이 적힌다.
Network address는 즉 이 둘의 만남의 장소가 되는 것이다.
socket( ) 함수는 각자가 서로를 만나기 위해 문을 박차고 나가는 상황이 된다.
아직 약속장소에 대한 정보가 없으므로,
밖으로 나서긴 했지만 어디로 가야할지는 모르겠다.
이 때 이 둘에게 약속장소, 즉 Specific한 Network address를 알려주는 과정이
Client에서는 connect( ) 함수, Server에서는 bind( ) 함수가 된다.
기본적으로 Server가 먼저 약속장소에 도착해서 Client를 기다린다.
애당초 socket 함수를 호출하는 타이밍이 server가 앞서있는 구조이다.
기다리는 과정은 Server의 listen( ) 함수를 통해 이뤄진다.
이윽고 Client가 도착하면 listen( )함수를 통해 먼저 기다리고 있던 Server는 Client를 맞이한다.
사실 이때 Client는 약속장소에 도착하자마자 Server에게 차일 수도 있다.
즉, Server는 Client를 거부할 수 있다.
Server가 Client를 받아들여 준다면,
이 둘은 send( ), recv( ) 함수를 이용하여 대화를 나누게 된다.
소름돋게도 이 둘은 각자 하는말(send 함수)과 듣는말(recv함수)의 길이(bytes)를 계속하여 계산한다.
int로 반환되는 이 길이는 혹시 놓친 말은 없는지 등등을 체크할 때 아주 요긴하게 사용된다.
'박우디의 개발여행 > SW 이야기' 카테고리의 다른 글
06. Knowledge Based AI #1 (0) | 2024.08.26 |
---|---|
04. 컴파일 언어 vs 인터프리터 언어 (0) | 2023.03.01 |
03. Build batch files (0) | 2023.02.18 |
01. 컴파일 에러와 실행중 에러 (0) | 2023.01.22 |