inet_aton
ネットワークアドレスの変換に問題があります。以下のコードは、アドレスを変換するために正常に機能します10.0.0.1
char *x1;
struct sockaddr_in si_other;
inet_aton("10.0.0.1", &si_other.sin_addr);
printf("si_other.sin_addr =%lu\n",si_other.sin_addr);
x1 = inet_ntoa(si_other.sin_addr);
printf("x1=%s\n",x1);
以下を出力します。
si_other.sin_addr =16777226
x1=10.0.0.01
今のところ問題ありません。010.000.000.001
ただし、渡されると関数は奇妙に動作します
char *x2;
struct sockaddr_in si_other2;
inet_aton("010.000.000.001", &si_other2.sin_addr);
printf("si_other2.sin_addr =%lu\n",si_other2.sin_addr);
x2 = inet_ntoa(si_other2.sin_addr);
printf("x2=%s\n",x2);
出力:
si_other.sin_addr2 =16777224
x2=8.0.0.01
この関数は、192.168.0.1
と192.168.000.001
が渡されると正常に機能します。
誰かが私に問題とは何か、そして私が問題を解決する方法を説明できますか?(注:010.000.000.001
コードのようにIPアドレスを渡す必要があります)