/* makeaddr.c:
*
* Demonstrate inet_lnaof, inet_netof
* and inet_makeaddr(3) functions;
*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc,char **argv){
int x;
struct sockaddr_in adr_inet;/* AF_INET */
const char *addr[] = {
"44.135.86.12",
"127.0.0.1",
"172.16.23.95",
"192.168.9.1"
};
unsigned long net, hst;
for ( x=0; x<4; ++x ) {
/*
* Create a socket address:
*/
memset(&adr_inet,0,sizeof adr_inet);
adr_inet.sin_family = AF_INET;
adr_inet.sin_port = htons(9000);
if ( !inet_aton(addr[x], &adr_inet.sin_addr) )
puts("bad address.");
/*
* Split address into Host & Net ID
*/
hst = inet_lnaof(adr_inet.sin_addr);
net = inet_netof(adr_inet.sin_addr);
printf("%14s : net=0x%08lX host=0x%08lX\n",
inet_ntoa(adr_inet.sin_addr),net,hst);
/*
* Zero the address to prove later that
* we can reconstruct this value:
*/
memset(&adr_inet,0,sizeof adr_inet);
adr_inet.sin_family = AF_INET;
adr_inet.sin_port = htons(9000);
adr_inet.sin_addr = inet_makeaddr(net,hst);
/*
* Now display the reconstructed
* address:
*/
printf("%14s : %s\n\n", "inet_makeaddr", inet_ntoa(adr_inet.sin_addr));
}
}
/*********************************************************
output:
*******
[sgupta@rhel55x86 chap3]$ ./makeaddr
44.135.86.12 : net=0x0000002C host=0x0087560C
inet_makeaddr : 44.135.86.12
127.0.0.1 : net=0x0000007F host=0x00000001
inet_makeaddr : 127.0.0.1
172.16.23.95 : net=0x0000AC10 host=0x0000175F
inet_makeaddr : 172.16.23.95
192.168.9.1 : net=0x00C0A809 host=0x00000001
inet_makeaddr : 192.168.9.1
[sgupta@rhel55x86 chap3]$
/*********************************************************
output:
*******
[sgupta@rhel55x86 chap3]$ ./makeaddr
44.135.86.12 : net=0x0000002C host=0x0087560C
inet_makeaddr : 44.135.86.12
127.0.0.1 : net=0x0000007F host=0x00000001
inet_makeaddr : 127.0.0.1
172.16.23.95 : net=0x0000AC10 host=0x0000175F
inet_makeaddr : 172.16.23.95
192.168.9.1 : net=0x00C0A809 host=0x00000001
inet_makeaddr : 192.168.9.1
[sgupta@rhel55x86 chap3]$
*********************************************************/
No comments:
Post a Comment