直接贴代码:
void AnalysisCommand::setSSID()
{
printf("----------SetSSID----------\n");
char ssid[64] = {0};
char passworld[64] = {0};
int retval = g_configuretable.GetSSID(ssid);
int retval2 = g_configuretable.GetPassword(passworld);
if(!retval&&!retval2)
{
char creat_conf[128]={0};
char add_network[128]={0};
char cmd_ssid[128] = {0};
char cmd_pwd[128] = {0};
char shut_wpa[128] = {0};
char start_wpa[128] = {0};
char select_network[128]={0};
sprintf(creat_conf,"echo \"ctrl_interface=/var/run/wpa_supplicant\" > /wpa.conf");
sprintf(add_network,"wpa_cli add_network");
sprintf(cmd_ssid,"wpa_cli set_network 0 ssid \\\"%s\\\"",ssid);
if( strlen(passworld)!=0)
{
sprintf(cmd_pwd,"wpa_cli set_network 0 psk \\\"%s\\\"",passworld);
}
else
{
sprintf(cmd_pwd,"wpa_cli set_network 0 key_mgmt NONE");
}
sprintf(shut_wpa,"wpa_cli terminate");
sprintf(start_wpa,"wpa_supplicant -B -Dwext -iwlan0 -c /wpa.conf");
sprintf(select_network,"wpa_cli select_network 0");
system(shut_wpa);
system(creat_conf);
system(start_wpa);
system(add_network);
system(cmd_ssid);
system(cmd_pwd);
system(select_network);
printf("Set SSID :%s",ssid);
}
}
测试网络是否连通的代码,直接调用的ping命令,不断的ping指定的ip地址:
int status = -1;
for(int i=0;i<10;i++)
{
printf("print for the %d time...\n",i+1);
if(getNetStatus()==0)
{
status = 0;
usleep(50000);
break;
}
}int AnalysisCommand::getNetStatus()
{
char gw[64] = {0};
char ping_cmd[64] = {0};
int getgw = g_configuretable.GetGateWay(gw);
if(!getgw)
{
sprintf(ping_cmd,"ping -c 1 -w 1 %s",gw);
}
else
{
sprintf(ping_cmd,"ping -c 1 -w 1 192.168.1.1");
printf("default gw 192.168.1.1\n");
}
char buf[512];
int retval =-1;
FILE *pp;
if( (pp = popen(ping_cmd, "r")) == NULL )
{
printf("popen() error!\n");
}
else
{
while(fgets(buf, sizeof buf, pp))
{
printf("------------------------line\n");
printf("%s", buf);
if((strstr(buf,(char *)"packet loss")!=NULL)&&(strstr(buf,(char *)"100% packet loss")==NULL))
{
printf("can find packet loss but cannot fint 100 packet loss\n");
retval=0;
break;
}
}
pclose(pp);
}
return retval;
}
这段博客分享了如何通过编程方式调用ping命令来检查网络连接状态。代码直接执行ping操作,不断ping目标IP地址,从而判断网络是否通畅。
1369

被折叠的 条评论
为什么被折叠?



