2016-08-25 2 views
-2

소켓 프로그래밍에 대한 질문이 있습니다. 소켓 버퍼를 지우고 싶습니다. 나는 빈에 버퍼를 설정할 becase, 태그 위치에 다시 read()을 사용하지 않으리눅스에서 소켓 버퍼를 지우는 방법

int ret_read = read(return_events[index].data.fd, recv_buffer, sizeof(recv_buffer)); 
if(-1 == ret_read) 
{ 
    if(EAGAIN != errno) 
    { 
     printf("read data from %d error occured, errno=%d, %s.\n", return_events[index].data.fd, errno, strerror(errno)); 
     /** 
     Tag-position, I know buffer is not empty. I wonder clear buffer in code position.The buffer is socket recv buffer, is not recv_buffer. 
     */ 
    } 
    continue; 
} 

: 나는 다음 코드를 시도했다. 태그 위치에 read()을 사용했지만, 실패 할 수도 있습니다.

태그 위치에 read()을 제외하고 다른 방법으로 말할 수있는 사람이 있습니까?

+2

다른 아니에요? 자신의'recv_buffer' 또는 소켓 수신 버퍼를 비우고 싶습니까? '태그 위치'는 무엇을 의미합니까? 'recv()'로부터 에러를 받았을 때 버퍼가 비어 있지 않다고 생각하는 이유는 무엇입니까? – EJP

+0

나는 deja-vu를 가지고있다. 그 같은 질문은 몇 시간 전/일 전에 물었다. – Olaf

+0

그리고 C++ 코드처럼 보이지 않습니다. ** ** 하나 ** 언어를 선택하십시오! – Olaf

답변

0

그것은 다른 버퍼 당신은 왜 그것을 취소 할

bzero(recv_buffer, sizeof(recv_buffer)); 
+0

흠, 좋아요, 질문을 다시 읽은 다음에는 하나의 옵션 일 수 있습니다. 어쨌든 그러한 불분명 한 질문에 대답해서는 안됩니다. 대신 세부 사항/설명을 위해 의견을 게시하십시오. – Olaf

+0

@Olaf 소켓은 파일 기술자 일 뿐이므로 "버퍼"에 관한 한 가지 옵션 만 남았습니다.또한 여기에 질문하는 모든 사람이 모든 것에 대해 정확한 용어를 모두 알고있는 것은 아닙니다. 네,이 질문은 약간 불분명하지만 경험과 노출 부족으로 인한 것일 수 있습니다. –

+0

@ LiadBen-Yehuda 세 가지 가능한 버퍼가 두 개 있습니다 :'recv_buffer', 소켓 수신 버퍼, 어쩌면 소켓 송신 버퍼입니다. – EJP

관련 문제