본문으로 바로가기
728x90
반응형

오늘은 정상적으로 tcp 소켓 통신이 종료된 것을 어떻게 알 수 있는지 알아보겠습니다.

 

1. 송신류 함수의 리턴값

 

소켓 연결 후, 소켓이 정상 종료된 상태에서 write, send, sendto 등의 함수를 사용하면 리턴값은 어떻게 나올까요?

 

바로 -1이 리턴됩니다.

 

2. 수신류 함수의 리턴값

 

소켓 연결 후, 소켓이 정상 종료된 상태에서 read, recv, recvfrom 등의 함수를 사용하면 리턴값은 어떻게 나올까요?

 

바로 0이 리턴됩니다.

 

 

정상적으로 tcp 소켓 통신이 종료되었을 경우는 위의 리턴값을 활용하면 됩니다.

 

 

그러나 랜선이 빠지거나, 네트워크 포트가 내려가는 등의 경우 종료를 파악할 수 없습니다.

 

그럴 때는 select 등의 함수로 소켓 디스크립터가 반응이 있는지에 대한 여부를 판단하여 타임아웃이 날 경우에 대한 처리를 해줘야됩니다.

 

이상입니다.

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

[C] undefined reference to 에러  (2) 2021.08.13
[C] cJSON을 사용하여 json 파싱  (0) 2021.03.30
[C] epoll 이란  (0) 2020.12.28
[C] gcc의 mcmodel 옵션  (0) 2020.12.28
[c언어] 소켓 함수 타임아웃  (0) 2020.07.21