■ 클라이언트 소켓을 생성하고, 서버로 연결을 요청.

(1) connect() - 연결요청

○ 함수원형
  int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)

○ 리턴 값
  성공 시 : 0, 실패 시 : -1

- sockfd : 클라이언트 소켓의 파일 디스크립터.
- addr : 연결 요청을 보낼 서버의 주소 정보를 지닌 구조체 변수의 포인터.
- addrlen : serv_addr 포인터가 가리키는 주소 정보 구조체 변수의 크기.

=> connect() 함수가 리턴되는 시점은, 연결 요청이 서버에 의해 수락되거나, 오류가 발생해서 연결 요청이 중단되는 경우이다.
    만약 연결 요청이 바로 이루어지지 않고 서버의 대기 큐에서 대기하고 있는 상태라면 connect 함수는 리턴되지 않고,
    블로킹 상태에 있게 된다.



(2) 클라이언트 소켓의 주소정보

○ 클라이언트 프로그램 구현과정
: 소켓 생성 -> 서버연결 요청 -> 데이터 송수신 -> 연결종료

○ 클라이언트의 주소할당
: 네트워크를 통해서 데이터를 주고 받기 위해서 소켓이 필요하고, 그 소켓은 IP주소와 PORT정보가 반드시 할당되어야 한다.
  클라이언트의 주소 할당은 connect() 함수를 호출할 때, 커널이 자동으로 해준다. (bind 과정 필요없음)


by 민트앤라떼 2012. 3. 6. 16:52