전 장에서 서버측의 흐름도를 살펴봤습니다. 클라이언트도 이와 비슷하지만 전화를 거는 사람과 받는 사람이 해야하는 일이 다르듯이 소켓프로그래밍도 서버와 클라이언트를 다른 방식으로 처리하게 됩니다. 클라이언트는 서버보다는 조금더 간단하게 구현이 되지요.
클라이언트 측에서는 bind함수를 호출해줄 필요가 없습니다. 접속요청이 들어오는건 서버뿐이니 주소를 할당하는건 클라이언트에겐 필요없겠지요. 마찬가지로 listen함수도 호출해줄 필요가 없습니다. 접속요청이 올리가 없기 때문에 접속요청을 수락하는 작업도 필요없기 때문이지요.
클라이언트의 프로그래밍 순서도를 짜보면 다음과 같습니다.
1. socket함수 : socket을 생성( 전화기를 장만 )
2. connect함수 : 서버에 접속요청을 한다( 전화를 건다 )
3. recv, send 함수 : 연결이 된 후부턴 서버와 데이터를 주고 받는다 ( 대화를 한다 )
4. closesocket 함수 : 연결을 종료한다 ( 전화기를 끊는다 )
오우 너무 간단해 졌네요. 서버에서 해주던 bind와 listen함수를 제외시키고 accept 함수대신 connect함수를 사용하고 있습니다.
connect함수는 이름 그대로 서버에 접속을 하게끔 해주는 함수 입니다.
int connect( SOCKET s, const struct sockaddr* name, int namelen );
여기서도 함수에 대해 부연설명을 하지 않습니다. 앞으로 차차 할것이기 때문에 우선은 클라이언트 소켓프로그래밍 흐름도만 익혀두는 것만으로도 큰 수확 입니다.
- Reference
'[ Windows Program ] > Windows API' 카테고리의 다른 글
주소 사용법( 주소체계, 바이트순서 ) (0) | 2011.03.07 |
---|---|
주소 할당 함수 bind (0) | 2011.03.07 |
소켓 프로그래밍 흐름도(서버) (0) | 2011.03.07 |
소켓 생성 함수 socket() (0) | 2011.03.07 |
윈속(WinSock)의 기초 (0) | 2011.03.07 |