0
일부 주소가 10.0.0.0 - 10.255.255.255 범위 내에 있는지 알고 싶습니다.ipv4 주소 비교 - sockaddr_in
int localAddress = 0;
struct sockaddr_in localOneFirst;
struct sockaddr_in localOneLast;
inet_pton(AF_INET, "11.0.0.0", &(address.sin_addr));
inet_pton(AF_INET, "10.0.0.0", &(localOneFirst.sin_addr));
inet_pton(AF_INET, "10.255.255.255", &(localOneLast.sin_addr));
if((address.sin_addr.s_addr >= localOneFirst.sin_addr.s_addr) && (address.sin_addr.s_addr <= localOneLast.sin_addr.s_addr)) {
localAddress = 1;
}
내 주소 11.0.0.0은 10.255.255.255보다 큽니다. 그러나이 프로그램에서는 그렇지 않습니다.
"address.sin_addr.s_addr"값이 11이고 "localOneFirst.sin_addr.s_addr"값이 더 크기 때문입니다.
그럼 일부 주소가이 범위에 있는지 어떻게 알 수 있습니까?
가능한 복제 [C에서 소켓 주소를 비교하는 방법?] (https://stackoverflow.com/questions/15461350/how-to-compare-socket -address-in-c) – v1bri
아니요, 다릅니다. –
문제가 무엇인지 잘 모릅니다. 32 비트 정수의 첫 번째 옥텟을 비교하거나 이미 점으로 표시된 표현이 있으므로 첫 번째 점 앞에있는 숫자를 비교하십시오. – SergeyA