리모트의 다른 컴퓨터는 아니구여 로컬 머신의 랜카드 주소를 알아내고 싶어서요.. 어떤방법을 쓰나요? 리눅스 머신일 경우에 말이죠.. *^^*
그냥 보고만 싶으면 ifconfig -a하면 됩니다.
프로그램에서 알아내고자 하면 ioctl을 수행해야 하는데 방법은 ifconfig source를 보면 됩니다.
ㄱ,럼...
#include #include #include #include #include #include #include #include #include #include #include
int main (int argc, char *argv[]) { struct ifreq *iflist; struct sockaddr *sa; int fd; char *out;
if(argc != 2) { printf("Usage progname ifname (ex progname eth0)\n"); return -1; } iflist = malloc (sizeof (struct ifreq));
fd = socket (PF_INET, SOCK_STREAM, 0);
strncpy (iflist->ifr_name, argv[1], strlen (argv[1]));
if (ioctl (fd, SIOCGIFHWADDR, iflist) == -1) { perror ("ioctl failed"); return -1; }
sa = &(iflist->ifr_hwaddr);
out = ether_ntoa ((struct ether_addr *) sa->sa_data);
printf ("%s\n", out);
return 0; }
소켓열고 ioctl에서 SIOCGIFHWADDR 를 넘기면 하드웨어 주소를 넣어줍니 다. sa.sa_data에서 6바이트에 들어가니까 포맷을 바꾸시는 래퍼함수 만드시 면 되겠네요.
man 7 netdevice /usr/include/netinet/{"ether.h","if_ether.h"} /usr/include/net/{"if.h","ethernet.h"} /usr/include/bits/ioctls.h 기타등등 머리파일들 참조
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: [질문] mac address 알아내려면 어떻게 해야할까요?
그냥 보고만 싶으면
ifconfig -a하면 됩니다.
프로그램에서 알아내고자 하면 ioctl을 수행해야 하는데
방법은 ifconfig source를 보면 됩니다.
ㄱ,럼...
Re: [질문] mac address 알아내려면 어떻게 해야할까요?
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int
main (int argc, char *argv[])
{
struct ifreq *iflist;
struct sockaddr *sa;
int fd;
char *out;
if(argc != 2)
{
printf("Usage progname ifname (ex progname eth0)\n");
return -1;
}
iflist = malloc (sizeof (struct ifreq));
fd = socket (PF_INET, SOCK_STREAM, 0);
strncpy (iflist->ifr_name, argv[1], strlen (argv[1]));
if (ioctl (fd, SIOCGIFHWADDR, iflist) == -1)
{
perror ("ioctl failed");
return -1;
}
sa = &(iflist->ifr_hwaddr);
out = ether_ntoa ((struct ether_addr *) sa->sa_data);
printf ("%s\n", out);
return 0;
}
소켓열고 ioctl에서 SIOCGIFHWADDR 를 넘기면 하드웨어 주소를 넣어줍니
다.
sa.sa_data에서 6바이트에 들어가니까 포맷을 바꾸시는 래퍼함수 만드시
면 되겠네요.
man 7 netdevice
/usr/include/netinet/{"ether.h","if_ether.h"}
/usr/include/net/{"if.h","ethernet.h"}
/usr/include/bits/ioctls.h
기타등등 머리파일들 참조
댓글 달기