首页 > 代码库 > Linux基础——查看IP及port的简单实现
Linux基础——查看IP及port的简单实现
需要注意,不同的机器,有的可能为大端字节序,有的可能为小端字节序。
小端就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。
大端就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。
实现代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <sys/socket.h> 5 #include <netinet/in.h> 6 #include <arpa/inet.h> 7 #define IP "180.97.33.107" 8 int my_aton(char * ip) 9 {10 int arr[4];11 int i;12 sscanf(ip,"%d.%d.%d.%d",arr,arr+1,arr+2,arr+3);13 i=(arr[0]<<24)|(arr[1]<<16)|(arr[2]<<8)|arr[3];14 return i;15 }16 char* my_ntoa(int i)17 {18 static char buf[1024];19 memset(buf,0,1024);20 sprintf(buf,"%d.%d.%d.%d",(i>>24)&0xff,(i>>16)&0xff,(i>>8)&0xff,i&0xff);21 return buf;22 }23 int main(int argc,char *argv[])24 {25 int i;26 i=my_aton(IP);27 struct in_addr my_add;28 inet_aton(IP,&my_add);29 printf("%x\n",i);30 printf("%x\n",my_add.s_addr);31 char *buf;32 buf=my_ntoa(i);33 printf("%s\n",buf);34 printf("%s\n",inet_ntoa(my_add));35 }
获得本地的IP方法如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>int main(int argc,char *argv[]){ struct hostent *p; p=gethostbyname(argv[1]); char **pp; printf("name : %s\n",p->h_name); pp=p->h_aliases; for(;*pp!=NULL;*pp++) printf("alia : %s\n",*pp); printf("type : %d\n",p->h_addrtype); printf("ip length : %d\n",p->h_length); pp=p->h_addr_list; for(;*pp != NULL;*pp++) printf("ip : %s\n",inet_ntoa(*(struct in_addr*)*pp)); return 0;}
Linux基础——查看IP及port的简单实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。