2016-06-05 1 views
1

소켓에서 데이터 스트림을 읽고 서버에서 전송이 끝나면 읽기를 중지하고 싶습니다. 아래 코드는 else if를 결코 실행하지 않습니다 (왜냐하면 read는 결코 0 바이트를 읽지 않기 때문입니다). 어떻게하면 서버에서 원하는 것을 얻은 후에 깨는 while 루프를 깨거나 수정할 수 있습니까? read 기능 0를 반환 할소켓에서 읽는 중 끊어짐 조건

while(1){ 
     /* receive answer from server */ 
     t = read(sock, output, MAX); 
     if (t > 0) { 
      puts("received smthn"); 
     } 
     else if (t == 0) { 
      puts("***ITS OVER***"); 
     } else { 
      printf("Connection with server terminated.\n"); 
      exit(1); 
     } 
    } 
+1

무엇 전송 완료 참조 : 서버가 소켓에 close 전화를 잊어 버린 경우 일부 데이터가 소켓에서 읽을 준비가 된 경우

, 당신은 읽기 전에 볼을 시도 할 수 있습니다? 피어가 연결을 닫으면 NB'read()'는 0을 반환한다. – EJP

+0

서버가 소켓을 통해 문자열을 전송 중입니다. – Belorenz

답변

관련 문제