//獲去GateWay
QString GetGateWay()<br />{<br />FILE *fp;<br />char buf[512];<br />char cmd[128];<br />char gateway[30];<br />char *tmp;</p><p>strcpy(cmd, "ip route");<br />fp = popen(cmd, "r");<br />if(NULL == fp)<br />{<br />perror("popen error");<br />return "";<br />}<br />while(fgets(buf, sizeof(buf), fp) != NULL)<br />{<br />tmp =buf;<br />while(*tmp && isspace(*tmp))<br />++ tmp;<br />if(strncmp(tmp, "default", strlen("default")) == 0)<br />break;<br />}<br />sscanf(buf, "%*s%*s%s", gateway);<br />printf("default gateway:%s/n", gateway);<br />pclose(fp);</p><p>return QString(gateway);<br />}
//設定網關
int SetGateWay(const char *szGateWay)<br />{<br />int ret = 0;<br />char cmd[128];<br />QString DefGW = GetGateWay();</p><p>const char *strGW = DefGW.latin1();</p><p>strcpy(cmd, "route del default gw ");<br />strcat(cmd, strGW);<br />ret = system(cmd);<br />if(ret < 0)<br />{<br />perror("route error");<br />return -1;<br />}<br />strcpy(cmd, "route add default gw ");<br />strcat(cmd, szGateWay);</p><p>ret = system(cmd);<br />if(ret < 0)<br />{<br />perror("route error");<br />return -1;<br />}</p><p>return ret;<br />}