1. 입력 및 출력 스트림
- 입력 스트림 : 데이터 수신을 위한 스트림
- 출력 스트림 : 데이터 전송을 위한 스트림
2. 소켓 연결 종료의 문제점
- close, closesocket 함수의 호출 : 입력 출력 스트림 완전 종료.
- 일방적인 방식의 완전종료는 경우에 따라서 문제가 될 수 있다.
3. Half-close
- Half-close : 입력 및 출력 스트림 중 하나의 스트림만 종료하는 행위.
4. Half-close 기능의 함수 [리눅스]
#include <sys/socket.h>
int shutdown(int s, in how);
상수값 | 모드 | 정의 |
0 | SHUT_RD | 입력 스트림 종료 |
1 | SHUT_WR | 출력 스트림 종료 |
2 | SHUT_RDWR | 입 출력 스트림 종료 |
5. Half-close 기능의 함수 [윈도우]
#include <winsock2.h>
int shutdown(SOCKET s, int how);
상수값 | 모드 | 정의 |
0 | SD_RECEIVE | 입력 스트림 종료 |
1 | SD_SEND | 출력 스트림 종료 |
2 | SD_BOTH | 입 출력 스트림 종료 |
6. 출력 스트림의 종료의 필요성
- 출력 스트림을 종료하게 되면, 연결되어 있던 호스트로 EOF 메시지 전달.
- EOF의 전송으로 데이터 전송의 끝을 알려 줄 수 있다.
- EOF 전송 시, 상대 호스트의 데이터 수신 함수(read, recv)는 0을 리턴.
'[+] Information > [-] Network' 카테고리의 다른 글
[2009/06/21] 도메인 이름과 DNS (0) | 2009.06.21 |
---|---|
[2009/06/13] 예제소스(file_server.c, file_client.c, file_server_win.c, file_client_win.c) (0) | 2009.06.13 |
[2009/06/09] 예제소스(cecho_clienet.c, uecho_client_win.c) (0) | 2009.06.09 |
[2009/06/09] UDP 소켓의 성능향상 (0) | 2009.06.09 |