linux以socket的方式判断是否与公网连通
时间: 2023-12-16 22:03:41 浏览: 79
可以使用ping命令来判断是否与公网连通,也可以使用socket编程方式来实现。具体实现方式如下:
1. 创建一个socket对象;
2. 使用connect函数来连接一个公网地址,如百度的IP地址;
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(80); // 连接80端口,即HTTP协议端口
addr.sin_addr.s_addr = inet_addr("220.181.38.148"); // 百度的IP地址
// 连接到公网地址
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;
}
```
注意,此方法只能判断当前时刻是否与公网连通,不能保证一直连通。
阅读全文