2011-11-20 3 views
0

리눅스 소켓 프로그램을 작성 중이며 소켓에서 데이터를 읽을 때 이전 버퍼의 데이터 값을 읽었습니다. 나는 read() 호출을 사용하고 있지만 recv()도 시도해 보았고 두 결과 모두 같은 불만을 일으켰다.리눅스 소켓 오래된 데이터를 다시 읽음

read(client_sock, &test, sizeof(test));

read(client_sock, &test2, sizeof(test2));

read(client_sock, &test3, sizeof(test3));

테스트, TEST2, 그리고 TEST3 모든 문자이며, 클라이언트에 의해 작성된 char 값 읽을하려고 다음은 세 가지 읽기 호출이다. 어떤 도움이라도 대단히 감사하겠습니다.

+1

시스템 호출시 실제로 한 바이트 씩 읽는 중입니까? – sarnold

+0

'read()'의 반환 값을 검사하지 않는 것으로 보입니다. –

답변

5

나는 당신이 당신의 읽기가 성공했다고 가정하고 당신이 요구 한만큼 많은 자료를 읽었다 고 의심된다.

반드시 그런 것은 아닙니다.

"read()"에서 반환 값을 가져와야합니다. 버퍼보다 작을 수 있습니다. "-1"(오류) 일 수 있습니다.

관련 문제