在linux下 擷取,修改子網路遮罩NETMASK的兩個函數

來源:互聯網
上載者:User

//擷取子網路遮罩的函數QString GetLocalNetMask()<br />{<br />int sock_netmask;<br />char netmask_addr[50];</p><p>struct ifreq ifr_mask;<br />struct sockaddr_in *net_mask;</p><p>sock_netmask = socket( AF_INET, SOCK_STREAM, 0 );<br />if( sock_netmask == -1)<br />{<br />perror("create socket failture...GetLocalNetMask/n");<br />return "";<br />}</p><p>memset(&ifr_mask, 0, sizeof(ifr_mask));<br />strncpy(ifr_mask.ifr_name, ifname, sizeof(ifr_mask.ifr_name )-1); </p><p>if( (ioctl( sock_netmask, SIOCGIFNETMASK, &ifr_mask ) ) < 0 )<br />{<br />printf("mac ioctl error/n");<br />return "";<br />}</p><p>net_mask = ( struct sockaddr_in * )&( ifr_mask.ifr_netmask );<br />strcpy( netmask_addr, inet_ntoa( net_mask -> sin_addr ) );</p><p>printf("local netmask:%s/n",netmask_addr); </p><p>close( sock_netmask );<br />return QString( netmask_addr );<br />}

//修改子NETMASK的函數

QString SetLocalNetMask(const char *szNetMask)<br />{<br />int sock_netmask;<br />char netmask_addr[32]; </p><p>struct ifreq ifr_mask;<br />struct sockaddr_in *sin_net_mask;</p><p>sock_netmask = socket( AF_INET, SOCK_STREAM, 0 );<br />if( sock_netmask == -1)<br />{<br />perror("Not create network socket connect/n");<br />return "";<br />}</p><p>memset(&ifr_mask, 0, sizeof(ifr_mask));<br />strncpy(ifr_mask.ifr_name, "eth0", sizeof(ifr_mask.ifr_name )-1);<br />sin_net_mask = (struct sockaddr_in *)&ifr_mask.ifr_addr;<br />sin_net_mask -> sin_family = AF_INET;<br />inet_pton(AF_INET, szNetMask, &sin_net_mask ->sin_addr);</p><p>if(ioctl(sock_netmask, SIOCSIFNETMASK, &ifr_mask ) < 0)<br />{<br />printf("sock_netmask ioctl error/n");<br />return "";<br />}<br />}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.