正文
使用C语言 判断当前网络是否联通
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
方式一:
int GetNetStat( )
{
char buffer[BUFSIZ];
FILE *read_fp;
int chars_read;
int ret;
try
{
memset( buffer, , BUFSIZ );
read_fp = popen("ifconfig eth0 | grep RUNNING", "r");
if ( read_fp != NULL )
{
chars_read = fread(buffer, sizeof(char), BUFSIZ-, read_fp);
if (chars_read > )
{
ret = ;
}
else
{
ret = -;
}
pclose(read_fp);
}
else
{
ret = -;
}
}
catch
{
ret = -;
} return ret;
}
方式二:
#define NET_PORT 53
#define NET_IP "8.8.8.8" //谷歌DNS //获取联网状态
int check_net(void)
{ int fd;
int in_len=;
struct sockaddr_in servaddr;
//char buf[128]; in_len = sizeof(struct sockaddr_in);
fd = socket(AF_INET,SOCK_STREAM,);
if(fd < )
{
perror("socket");
return -;
} /*设置默认服务器的信息*/
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(NET_PORT);
servaddr.sin_addr.s_addr = inet_addr(NET_IP);
memset(servaddr.sin_zero,,sizeof(servaddr.sin_zero)); /*connect 函数*/
if(connect(fd,(struct sockaddr* )&servaddr,in_len) < )
{ printf("not connect to internet!\n ");
close(fd);
return ; //没有联网成功
}
else
{
printf("=====connect ok!=====\n");
close(fd);
return ;
}
}