man 2 sendto
에서 : 성공UDP 소켓의 경우 send 함수가 실패하지 않지만 요청한 것보다 적은 데이터를 쓰는 것이 실제로 발생할 수 있습니까?
그러므로 현실적으로 UDP 소켓에 기록 할 때의, 이러한 호출은 전송 된 바이트 수를 반환합니다. 에러시 -1이 반환되고 errno가 적절하게 설정됩니다.
send()
기능 요청보다 적은 데이터를 기록하는 발생할 수 있습니다, 나는 이러한 기능의 실패로 처리되지 않은 모든 데이터를 쓸 수있는 그 실패를 이해하고 있습니까하지만, 이 실패의 이유는
errno
에 명시되어 있지 않습니까?
send()
은 -1
을 적절하게 반환하고 errno
을 적절하게 설정하거나 보낼 요청 바이트 수를 반환 할 수 있습니까? 즉
는 : 충분한이 오류 처리 코드 :
if(send(udp_sock_fd, buf, buflen, 0) == -1) {
int err = errno;
fprintf(stderr, "Send failed:\n");
fprintf(stderr, strerror(err));
}
아니면 그런 일 작성 오히려 필요하다 :
ssize_t bytes_send = send(udp_sock_fd, buf, buflen, 0);
if(bytes_send == -1) {
int err = errno;
fprintf(stderr, "Send failed:\n");
fprintf(stderr, strerror(err));
} else if(bytes_send < buflen) {
fprintf(stderr, "Incomplete send for unknown reason.\n");
}
좋은 질문입니다. 또한 궁금합니다. 당신에게 "그냥 시도해보십시오"라고 말하는 사람을 때려주세요. –
그냥 사용해보세요. :) – jiveturkey
@jnbbender * slap *; P 더 심각한 점은 어떻게 도움이 될 수 있는지 모르겠다. 그런 상황을 유발할 수 있다고 생각하지 않는다. 실패한 시도가 없다면이 상황을 증명할 수 없다. 우연히 있다. – gaazkam