Pyon's Diary
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい
2002-09-13 舊 平成拾四年葉月七日 (曇) [長年日記]
Linuxで自ホストのIPアドレスを取得する。
Linuxで自ホストのIPアドレスを取得するには次の樣にすれば良いみたい。
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/if.h>
#include <unistd.h>
int
main (int argc, char** argv)
{
char if_name[] = "eth2";
int soc;
struct ifreq ifreq;
struct sockaddr_in *s;
strcpy (ifreq.ifr_name, if_name);
soc = socket (AF_INET, SOCK_DGRAM, 0);
ioctl(soc, SIOCGIFADDR, &ifreq);
s = (struct sockaddr_in *)&(ifreq.ifr_addr);
printf("%s ADDRESS : %s\n", if_name, inet_ntoa (s->sin_addr));
ioctl(soc, SIOCGIFBRDADDR, &ifreq);
s = (struct sockaddr_in *)&(ifreq.ifr_broadaddr);
printf("%s BROADCAST : %s\n", if_name, inet_ntoa (s->sin_addr));
ioctl(soc, SIOCGIFNETMASK, &ifreq);
s = (struct sockaddr_in *)&(ifreq.ifr_netmask);
printf("%s NETMASK : %s\n", if_name, inet_ntoa (s->sin_addr));
close (soc);
return 0;
}
此れをコンパイルして実行するとこんな感じ。
$ gcc -o iftest iftest.c $ ./iftest eth2 ADDRESS : 192.168.0.33 eth2 BROADCAST : 192.168.0.255 eth2 NETMASK : 255.255.255.0
[]
sdvia って知ってる?