일반적으로 TCP 클라이언트는 다음의 순서를 가진다.

1. socket()
2. connect()
3. send(), recv() 등 통신을 수행
4. closesocket() 를 이용해 소켓을 닫는다.

connect() 함수
- 클라이언트가 서버에 접속하여 TCP 프로토콜 수준의 연결이 이루어지도록 한다.

int connect(
SOCKET s,
const struct sockaddr* name,
int namelen
);

SOCKET s,
- 서버와 통신을 위해 만든 소켓

const struct sockaddr* name,
- 소켓 주소 구조체 변수를 서버 주소(원격 IP , 원격 포트번호) 로 초기화한 후 ,이 변수의 주소값을 여기에 대입한다.

int namelen
- 소켓 주소 구조체 변수의 길이(바이트) 를 대입한다.

클라이언트는 서버와 달리 bind() 함수를 호출하지 않으며, 그 상태에서 connect() 함수를 호출하면 운영체제는 자동으로
지역 IP 주소와 지역 포트 번호를 설정한다. 이때 자동으로 할당되는 포트 번호는 운영체제에 따라 다를 수 있으며,
윈도우일 경우 1024~5000 중 하나가 할당된다.


사용예)
 //connect()
 SOCKADDR_IN serveraddr;[각주:1]
 serveraddr.sin_family = AF_INET;[각주:2]
 serveraddr.sin_port = htons(9000);[각주:3]
 serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");[각주:4]
 retval = connect(sock, (SOCKADDR *) &serveraddr, sizeof(serveraddr));
 if(retval == SOCKET_ERROR ) err_quit("connect()");










  1. 소켓 주소 구조체 변수를 초기화한다. [본문으로]
  2. 소켓 주소 구조체 변수를 초기화한다. [본문으로]
  3. 소켓 주소 구조체 변수를 초기화한다. [본문으로]
  4. 원격 IP주소나 루프백 주소를 대입하면 된다. [본문으로]

'Windows > Network Programming' 카테고리의 다른 글

send(), recv() 사용 분석  (0) 2011.07.16
데이터 전송 함수 및 소켓 데이터 구조체  (0) 2011.07.16
TCP Server 분석  (0) 2011.07.15
TCP Server / Client  (0) 2011.07.15

+ Recent posts