반응형

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()를 호출하여 소켓을 닫아준다.(꺼준다.)

반응형

+ Recent posts