일반적으로 TCP 클라이언트는 다음의 순서를 가진다.
1. socket()
2. connect()
3. send(), recv() 등 통신을 수행
4. closesocket() 를 이용해 소켓을 닫는다.
connect() 함수
- 클라이언트가 서버에 접속하여 TCP 프로토콜 수준의 연결이 이루어지도록 한다.
int connect(
SOCKET s,
const struct sockaddr* name,
int namelen
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()");
'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 |