Client 측 함수 선언 과정
-
참고로 위의 함수들을 사용하기 위해서
헤더 파일인 <sys/socket.h>, <fcntl.h>, <sys/types.h>, <sys.stat.h>을(를) 포함해줘야 한다.
그리고 함수 원형에 대한 설명은 나중에 자세히 설명한다.
-
Client 측의 함수 선언 과정의 비유와 역할을 보면
↓
socket(int domain, int type, int protocol);
(성공 시 파일 디스크립터 부여, 실패 시 -1 반환)
서버 측에서와 같이 자신의 집에 전화기를 새로 장만한다.
즉, 앞선 서버 측 함수 선언 과정에서 자신만의 전용적인 소프트웨어적 전화기를 장만하는 역할이었다.
동일하게 클라이언트 측에서도 자신만의 전용적인 소프트웨어적 전화기를 장만해야 한다.
그러므로 클라이언트에서도 서버와 마찬가지로 자신만의 전화기를 장만한다.
↓
connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);
(성공 시 0, 실패 시 -1 반환)
전화기가 있으니 이제 전화를 걸 수 있다.
즉, 서버 측과 통신이 되게끔 연결을 요청하는 역할을 한다.
↓
read(int fd, void *buf, size_t nbytes);
(성공 시 받은 바이트 수[단 파일의 끝을 만나면 0], 실패 시 -1 반환)
write(int fd, const void *buf, size_t nbytes);
(성공 시 전달한 바이트 수, 실패 시 -1 반환)
전화가 서로 연결되면 이제 서로 말을 주로 받아야 한다.
즉, 서버 측에서도 위 2개 함수를 사용하여 데이터를 받거나 보내는 역할을 하는데
클라이언트 측에서도 마찬가지로 위 2개 함수를 사용하여 데이터를 받거나 보내는 역할을 한다.
↓
close(int fd);
(성공 시 0, 실패 시 -1 반환)
전화기(수화기)를 내려놓음으로써 전화를 끊는다.
즉, 서버 측에서도 close()를 호출하여 맨 처음 호출한 socket()로 인해 생긴 소켓을
다 사용했으니 닫아주는(꺼주는) 역할을 하듯이,
클라이언트 측에서도 close()를 호출하여 소켓을 닫아준다.(꺼준다.)
'시작하지 말았어야 했던 것 > (Unix, Linux) C Socket' 카테고리의 다른 글
(리눅스 기반 파일 조작) 저 수준 파일 입출력과 파일 디스크립터 (0) | 2021.02.02 |
---|---|
(리눅스) 클라이언트[client] 프로그램 구현 (0) | 2021.02.02 |
(리눅스) 서버[server] 프로그램 구현 (0) | 2021.02.01 |
(리눅스)서버 측 함수 선언 과정의 비유와 역할 (0) | 2021.02.01 |
네트워크 프로그래밍(소켓 프로그래밍) 서버와 클라이언트의 함수 선언 과정 (0) | 2021.02.01 |