|
Form에서 Char로 IP Address를 입력 받아
이를 32비트로 변환한후 다시 변환하려고
inet_addr function과 inet_ntoa를 사용하려하는데
에러가 나 이렇게 질문드립니다.
헤더화일에 winsock.h 를 포함하고
struct in_addr ip_addr;
char *ip;
ip = Edit1->Text.c_str();
ip_addr.S_un.S_addr = inet_addr(ip);
Edit2->Text = ip_addr.S_un.S_addr;
Edit3->Text = inet_ntoa(ip_addr);
이렇게 사용하여 문자열 IP Address를 32비트로 변환후 다시 IP Address로
변환하는것 까진 하였는데
만일 잘못된 IP Address를 입력하였을경우 이를 위한 에러처리를 어떻게 되는지
질문드립니다.
linux에서는 두개인 인자값을 이용하여 값을 변환하여주고 반환값으로
에러처리를 하는데
Visual에서는 하나의 인자값에 처리되어 받는 반환값만 있고
에러 처리값은 따로 없네요
IP Address보다 큰수를 넣으면 255.255.255.255를 넣었을때와 같은 4294967295가 나오고
입력값이 132.54.3 이렇게 3자일경우 132.54.0.3 이렇게 세번째 자리에
강제로 0 이 삽입됩니다.
또 192.2.3 이렇게 3자를 입력하면 255.255.255.255를 넣었을때와 같이 4294967295가 나옵니다.
4294967295이 에러처리로 쓰이는 숫자인지...
IP 변환에 대한 정확한 에러처리에 대해 좋은 답변 부탁드립니다.^^
|