반응형
TCP/IP는 socket관련 API를 통하여 socket을 생성합니다.
TCP/IP socket 통신 함수 호출 순서
TCP/IP의 Server와 Client의 기본적인 socket 생성과 접속 및 데이터 송수신의 흐름은 아래와 같습니다.
Client TCP/IP Flow
Client socket의 생성 및 접속 절차는 아래와 같습니다.
1. socket(2)함수를 통하여 socket을 생성합니다.
TCP/IP는 IP 기반이므로 Address Family를 AF_INET 설정하고 TCP는 연결지향형으므로 SOCK_STREAM으로 설정합니다.
int client_sock;
if((client_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
fprintf(stderr, "CLIENT SOCKET 생성 오류: %s\n", strerror(errno));
return -1;
}
2. connect(2)함수를 서버 socket에 접속합니다.
정상적으로 connect(2)가 되면 서버와 연결된 상태가 됩니다.
struct sockaddr_in server_addr;
memset(&server_addr, 0x00, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = inet_addr(addr);
if(connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) == -1) {
close(sock);
return -1;
}
3. recv(2) / send(2)로 데이터를 송수신합니다.
서로 정한 전문 format에 따라 send(2)/recv(2)를 이용하여 데이터를 송수신합니다.
4. close(2)
데이터 송수신이 완료되면, socket을 close하여 통신을 종료합니다.
see also : TCP/IP 통신 프로그램 Socket 통신 관련 Library
반응형
'C언어 응용 > TCP·IP' 카테고리의 다른 글
TCP/IP - 6. 공통 라이브러리 만들기(정보 제공 함수) (0) | 2019.10.01 |
---|---|
TCP/IP - 5. 공통 라이브러리 만들기(기본함수) (0) | 2019.10.01 |
TCP/IP - 3. Server 처리 flow (0) | 2019.10.01 |
TCP/IP - 2. port 번호 범위 (2) | 2019.10.01 |
TCP/IP - 1. 기본 용어 (2) | 2019.10.01 |