linux以socket 114.114.114.114的方式判断是否与公网连通
时间: 2023-12-16 15:03:41 浏览: 57
可以使用socket编程方式来判断是否与公网连通。具体实现方式如下:
1. 创建一个socket对象;
2. 使用connect函数来连接一个公网DNS地址,如114.114.114.114;
3. 如果connect函数返回0,则表示连接成功,即与公网连通;否则表示连接失败,即未与公网连通。
下面是一个简单的示例代码:
```
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
// 创建socket对象
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock < 0) {
perror("socket error");
return -1;
}
// 设置要连接的地址
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(53); // DNS服务器使用53端口
addr.sin_addr.s_addr = inet_addr("114.114.114.114"); // 公网DNS地址
// 连接到公网DNS地址
int ret = connect(sock, (struct sockaddr *)&addr, sizeof(addr));
if (ret < 0) {
printf("not connect to internet\n");
} else {
printf("connect to internet\n");
}
// 关闭socket对象
close(sock);
return 0;
}
```
注意,此方法只能判断当前时刻是否与公网连通,不能保证一直连通。
阅读全文