Results 1 to 3 of 3
Hi friends,
can anyone tell me how to read the IP address of the system from a C program..using ioctl calls and creating a raw socket.... something like
socket(AF_INET, SOCK_RAW, ...
- 03-30-2007 #1Just Joined!
- Join Date
- Aug 2006
- Posts
- 76
read IP address...
Hi friends,
can anyone tell me how to read the IP address of the system from a C program..using ioctl calls and creating a raw socket.... something like
socket(AF_INET, SOCK_RAW, IPPROTO_RAW) and (ioctl(fd, SIOCGIFADDR, &ifr)
please help me if u have some other ideas or if u know something on this...
thanks....
- 03-30-2007 #2Linux User
- Join Date
- Oct 2004
- Location
- /dev/random
- Posts
- 404
what's wrong with gethostbyname()?
What you'd get with SIOCGIFADDR is the interface address (for ethernet, MAC address) structure - not just the IP address, but quite a lot of more information.The Unforgiven
Registered Linux User #358564
- 04-02-2007 #3Just Joined!
- Join Date
- Aug 2006
- Posts
- 76
Thanks for reply the_unforgiven,
but if i run this program i am getting the output something like this...
the ip address is 7012340l
Family is 101
the port is 2052
string is
..........
so how to extract the ip address from this.... ??
whether what i am doing is correct ???
and please please tell me how to use gethostname()....gimme a simple piece of code to illustrate !!!
thanks again...Code:#include<stdio.h> #include<unistd.h> #include<sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> #include <netinet/in.h> int main() { int fd; struct ifreq ifr; struct sockaddr_in saddr; fd=socket(PF_INET,SOCK_STREAM,0); strcpy(ifr.ifr_name,"name of interface"); ioctl(fd,SIOCGIFADDR,&ifr); saddr=*((struct sockaddr_in *)(&(ifr.ifr_addr))); // is the address printf(" the ip address is %ul\n", saddr.sin_addr.s_addr); printf(" Family is %d\n", saddr.sin_family); printf(" the port is %d\n", saddr.sin_port); printf(" string is %s\n", saddr.sin_zero); return 0; //saddr.sin_addr.s_addr is the address of the interface in integer //format }


Reply With Quote