현재 내 필요에 맞게 Dennis Bush의 UFTP (http://uftp-multicast.sourceforge.net)를 수정 중입니다. 현재 내가하려고하는 것은 클라이언트가 COMPLETE 메시지를 보내는 주소를 변경하는 것입니다. 수정 된 버전의 UFTP 클라이언트가 서버에 유니 캐스팅하지 않고 COMPLETE 메시지를 멀티 캐스트하도록합니다. 멀티 캐스트 그룹의 모든 클라이언트가 전송되는 COMPLETE 메시지를 볼 수 있어야하기 때문입니다. 섬기는 사람.가능한 원인 errno 97 aka EAFNOSUPPORT aka 프로토콜에 의해 지원되지 않는 주소 패밀리
UFTP의 저자는 내가 완료를 전송하고자하는 나는 개인 멀티 캐스트 주소와 포트를 포함하는 구조에 client_transfer.c, 라인 359, nb_sendto() 함수 호출, 5 인수을 수정해야한다고 얘기하고있다 . 불행히도 "프로토콜에 의해 지원되지 않는 주소 패밀리"오류가 발생합니다. 코드 섹션은 다음과 같이 원래이었다
if (nb_sendto(listener, outpacket, payloadlen, 0,
(struct sockaddr *)&group_list[listidx].replyaddr,
sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
sockerror(group_list[listidx].group_id, group_list[listidx].file_id,
"Error sending COMPLETE");
} else {
log(group_list[listidx].group_id, group_list[listidx].file_id,
"COMPLETE sent");
}
set_timeout(listidx);
free(buf);
free(encrypted);
나의 현재 코드는 다음과 같습니다
if (nb_sendto(listener, outpacket, payloadlen, 0,
////modified line:
(struct in_addr *)&group_list[listidx].multi.s_addr, //struct in_addr multi;
////end of modified line
sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
sockerror(group_list[listidx].group_id, group_list[listidx].file_id,
"Error sending COMPLETE");
} else {
log(group_list[listidx].group_id, group_list[listidx].file_id,
"COMPLETE sent");
}
set_timeout(listidx);
free(buf);
free(encrypted);
오류는 매우 모호한, 나에게있다. 그것은 정확히 무엇을 의미합니까? 그러한 오류의 가능한 원인은 무엇입니까? 누군가가 올바른 방향으로 나를 가리킬 수 있을까요?
음 ... 처음에는 호환되지 않는 유형 (in_addr! = sockaddr_in)을 사용하고있는 것 같습니다 ... 어쨌든 errno 97에 대해 더 알고 싶습니다. – deinocheirus