當前位置:編程學習大全網 - 編程軟體 - 如何用C語言編程得到本地主機得IP和主機名?

如何用C語言編程得到本地主機得IP和主機名?

c語言本身是不提供的。

在windows下使用系統命令或windows.h

//列子

#include?"stdio.h"?

#include?"conio.h"?

main()?

{?

int?i,j;?

char?ip[20];?

char?temp[100];?

char?ch='\0';?

FILE?*fp;?

system("ipconfig?>d:\\myip.txt");?

if?((fp=fopen("d:\\myip.txt","r"))==NULL)?

{?

printf("the?file?can?not?open:\nPress?any?key?to?exit:");?

getch();?

exit(1);?

}?

for?(i=0;i<7;i++)?

{fgets(temp,80,fp);?/*跳過壹些行*/?

/*printf("%s\n",temp);?*/}?

fgets(temp,80,fp);?

i=0;j=0;?

while?(temp[i++]!=':')?

;?

while?(temp[i]!='\n')?

ip[j++]=temp[i++];?

ip[j]=0;?

printf("IP=%s\n",ip);?

fclose(fp);?

system("del?d:\\myip.txt");?

getch();?

}在Linux下#include?<stdio.h>;?

#include?<sys/types.h>;?

#include?<sys/socket.h>;?

#include?<sys/ioctl.h>;?

#include?<netinet/in.h>;?

#include?<net/if.h>;?

#include?<net/if_arp.h>;?

#include?<arpa/inet.h>;?

#include?<errno.h>;?

#define?ETH_NAME"eth0"?

int?main()?

{?

int?sock;?

struct?sockaddr_in?sin;?

struct?ifreq?ifr;?

sock?=?socket(AF_INET,?SOCK_DGRAM,?0);?

if?(sock?==?-1)?

{?

perror("socket");?

return?-1;?

}?

strncpy(ifr.ifr_name,?ETH_NAME,?IFNAMSIZ);?

ifr.ifr_name[IFNAMSIZ?-?1]?=?0;?

if?(ioctl(sock,?SIOCGIFADDR,?&ifr)?<?0)?

{?

perror("ioctl");?

return?-1;?

}?

memcpy(&sin,?&ifr.ifr_addr,?sizeof(sin));?

fprintf(stdout,?"eth0:?%s\n",?inet_ntoa(sin.sin_addr));?

return?0;?

}

  • 上一篇:想學SMT到哪家好
  • 下一篇:港口航道與海岸工程專業 和 船舶與海洋工程
  • copyright 2024編程學習大全網