0
내 TCP 서버 코드는 다음과 같다 : 어떤 이유 (unpluged 이더넷 라인)에 대한 소켓 분리는, 함수가 호출 프로세스를 차단 fputc합니다소켓 연결이 비정상적으로 끊어 질 때 FILE 스트림 버퍼는 어떻게 될까요?
conn_fd = accept();
stream = fdopen(conn_fd...);
//...
fp = fopen(path, "r");
while ((c = getc(fp)) != EOF)
fputc(c, stream);
경우? 버퍼를 스트리밍하려면 어떻게됩니까?
fputc 기능이 차단되는 경우 문제를 해결하기 위해 SO_SNDTIMEO를 설정할 수 있습니까?
대단히 감사합니다!
연결 종료가 적시에 감지되지 않을 수도 있지만, 그렇다면 송신 버퍼가 채워지면 fputc() 함수를 차단할 수 있습니다. – caf
사실, 기본 TCP 시간 초과는 다소 길다. 그러나 이러한 상황은 TCP 장애 패킷을 전송할 수없고 데이터 패키지에 전혀 응답이없는 네트워크 장애에서만 발생합니다. – Basilevs
사실 기본적으로 프로그램은 SIGPIPE 신호를받으며 오류가 아닌 종료됩니다. – mark4o