全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1888
推到 Plurk!
推到 Facebook!

如何取得自己的ip?

答題得分者是:deity
linda_wei
一般會員


發表:44
回覆:31
積分:20
註冊:2004-04-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-06 10:00:02 IP:211.75.xxx.xxx 未訂閱
如題...C,要如何取得自己的ip? linux平台
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-06 10:27:21 IP:218.15.xxx.xxx 未訂閱
linda_wei 您好,参考: http://dev.csdn.net/article/35/35435.shtm
 
标题   Windows和Linux得到本机IP地址的通用函数     选择自 liuleilover 的 Blog  
关键字   Windows和Linux得到本机IP地址的通用函数 
出处     
//参数:    ipbuf :存放得到的IP地址列表的数组,实际大小由bufcount指定。    bufcount:想要得到的IP地址列表的个数。    #ifdef _WIN32    #include 
#include 
#pragma comment(lib,"ws2_32.lib")    #else    #include 
#include 
#include 
#include 
#include 
#include 
#include     #endif    int getselfiplist(unsigned long ipbuf[],int bufcount)
{
  int i,count=0;
#ifdef _WIN32
  char hostname[128];
  struct hostent* inaddrs;
  if(gethostname(hostname,128)==0)
  {
    inaddrs=gethostbyname(hostname);
    if(inaddrs)
    {
      count=inaddrs->h_length/sizeof(in_addr);
      if(count>bufcount)count=bufcount;
      for(i=0;ih_addr_list[i];
      }
    }
  }
#else
  int sock; 
  struct sockaddr_in sin; 
  struct ifreq ifr;
  
  sock = socket(AF_INET, SOCK_DGRAM, 0); 
  if(sock>=0)//!<0
  {
    if(bufcount>100)bufcount=100;    
    for(i=0;i
或站内相关讨论,很丰富喔,试试看
http://delphi.ktop.com.tw/quicksearch.exe/quicksearch?SearchStr=IP¦a§}    ~~~静心养德~~~ 

        
linda_wei
一般會員


發表:44
回覆:31
積分:20
註冊:2004-04-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-06 14:08:04 IP:211.75.xxx.xxx 未訂閱
yes...3Q 那再請問, 如果, 我要取得包括mac address, getaway....等資料, c裡該如何取呢?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-06 15:05:29 IP:218.15.xxx.xxx 未訂閱
引言: yes...3Q 那再請問, 如果, 我要取得包括mac address, getaway....等資料, c裡該如何取呢?
您好,取得包括mac address: 【轉貼】取得系統中網卡MAC位址的三種方法 http://delphi.ktop.com.tw/topic.php?topic_id=53715 如何根據網路內的IP地址得到該機的MAC地址? http://delphi.ktop.com.tw/topic.php?topic_id=54290 【轉貼】Finding MAC address http://delphi.ktop.com.tw/topic.php?topic_id=53021 站内还有其他的信息,小弟未能一一贴上来,您可以自己去找找看,最重要的是自己根据实例实践一翻~ <>~~~静心养德~~~
linda_wei
一般會員


發表:44
回覆:31
積分:20
註冊:2004-04-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-27 16:58:38 IP:211.75.xxx.xxx 未訂閱
不曉得醬有沒有問題... 請多指教囉~ int GetIP(void) { int sockfd; struct sockaddr_in *addr; struct ifreq if_info; char buff[INET_ADDRSTRLEN]; //----ip sockfd =socket(AF_INET, SOCK_DGRAM, 0); strcpy(if_info.ifr_name, "eth0"); ioctl(sockfd, SIOCGIFADDR, &if_info); addr = (struct sockaddr_in *)&if_info.ifr_addr; inet_ntop(AF_INET,&addr->sin_addr,buff,sizeof(buff)) ; close(sockfd); printf("GetIP=%x=%s\n",addr->sin_addr,buff); //----mac sockfd =socket(AF_INET, SOCK_DGRAM, 0); strcpy(if_info.ifr_name, "eth0"); ioctl(sockfd, SIOCGIFHWADDR, &if_info); memcpy(buff, if_info.ifr_hwaddr.sa_data, 6); close(sockfd); printf("MAC=X,X,X,X,X,X\n",buff[0],buff[1],buff[2],buff[3],buff[4],buff[5]); printf("GetMac=%s\n",ether_ntoa((struct ether_addr *)buff)); //----mask sockfd =socket(AF_INET, SOCK_DGRAM, 0); strcpy(if_info.ifr_name, "eth0"); ioctl(sockfd, SIOCGIFNETMASK, &if_info); addr = (struct sockaddr_in *)&if_info.ifr_netmask; inet_ntop(AF_INET,&addr->sin_addr,buff,sizeof(buff)) ; close(sockfd); printf("GetMask=%x=%s\n",addr->sin_addr,buff); //----broadaddr sockfd =socket(AF_INET, SOCK_DGRAM, 0); strcpy(if_info.ifr_name, "eth0"); ioctl(sockfd, SIOCGIFBRDADDR, &if_info); addr = (struct sockaddr_in *)&if_info.ifr_broadaddr; inet_ntop(AF_INET,&addr->sin_addr,buff,sizeof(buff)) ; close(sockfd); printf("GetBcast=%x=%s\n",addr->sin_addr,buff); return 0; }
系統時間:2024-05-05 22:22:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!