#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <signal.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <sys/time.h>
#include <termios.h>
#include <sys/un.h>
#include <stddef.h>
#include <time.h>
#include <fcntl.h>
#include <poll.h>
#include <limits.h>
#include <netinet/in.h>
#include <error.h>
#include <net/route.h>
#include <net/if_arp.h>
浏览源代码.
|
int | get_ip_by_domain (const char *trgtadd, char *ip, int size) |
| 根据域名获取默认网卡设备的ip地址 更多...
|
|
int | get_ip (char *dev, char *ip, int size) |
| 获取指定网卡设备的ip地址 更多...
|
|
int | get_ip_info (char const *device, char *ip) |
| 获取指定网卡设备的ip地址 更多...
|
|
int | get_netmask (char *dev, char *mask, int size) |
| 获取指定网卡设备的子网掩码 更多...
|
|
int | get_gateway (char *dev, char *gway, int size) |
| 获取指定网卡设备的网关 更多...
|
|
int | get_mac (char *dev, char *mac, int size) |
| 获取指定网卡设备的mac地址 更多...
|
|
int | get_dns (char *dns1, int size1, char *dns2, int size2) |
| 获取本机指定的DNS服务器地址 更多...
|
|
int | check_ping (const char *target, unsigned int timeout_ms) |
| 网络检测函数,类似于ping命令 更多...
|
|
int | check_ping2 (const char *iface, const char *target, unsigned int timeout_ms) |
| 网络检测函数,类似于ping命令(指定端口) 更多...
|
|
int | detect_eth_cable (char *ifname) |
| 网卡状态检测 更多...
|
|
int | SetIfAddr (char *ifname, char *Ipaddr, char *mask) |
| 设置网卡IP地址 子网掩码 网关等信息 更多...
|
|
int | set_mac_addr (char *ifname, char *mac) |
| 设置网卡MAC地址 更多...
|
|
int | set_gateway (char *ifname, char *gateway) |
| 设置网卡IP地址 子网掩码 网关等信息 更多...
|
|
int | set_dns (char *dns1, char *dns2) |
| 设置本机DNS服务器地址,DNS地址如114.114.114.114 更多...
|
|
int | if_updown (char *ifname, int flag) |
| 打开关闭网卡 更多...
|
|
int | ether_atoe (const char *a, unsigned char *e) |
| 将以太网地址串表示转换为二进制数据 更多...
|
|
char * | ether_etoa (const unsigned char *e, char *a) |
| 将以太网地址二进制数据转换为字符串表示形式 更多...
|
|
void | udhcpc (char *net_interface) |
| 用udhcpc获取ip地址 更多...
|
|
- 作者
- zhengchuangyong (zheng.nosp@m.chua.nosp@m.ngyon.nosp@m.g@em.nosp@m.bedsk.nosp@m.y.ne.nosp@m.t)
- 版本
- 1.0
- 日期
- 2021-09-13
- 版权所有
- Copyright (c) 2023 广州省天嵌嵌入式技术股份有限公司
- 修改日志:
Date | Version | Author | Description |
2021-09-13 | 1.0 | zhengchuangyong | 第一次发布,对网络相关的一些进行封装,如获取和设置ip地址、子网掩码、网关,检测网络状态等。 |
int check_ping |
( |
const char * |
target, |
|
|
unsigned int |
timeout_ms |
|
) |
| |
网络检测函数,类似于ping命令
- 参数
-
target | 目标地址域名或者ip |
timeout_ms | 检测超时(毫秒);ps:用于获取网络的返回信息(参考ping命令的返回信息),详见结构体struct ping_struct该参数也可以不传入,设置为NULL即可。如: check_ping(&target,timeout_ms,NULL); |
- 返回
- int 成功返回大于0,超时返回等于0,失败返回-1。不受ps参数影响
int check_ping2 |
( |
const char * |
iface, |
|
|
const char * |
target, |
|
|
unsigned int |
timeout_ms |
|
) |
| |
网络检测函数,类似于ping命令(指定端口)
- 参数
-
iface | 网口名称,如“eth0” |
target | 目标地址域名或者 ip |
timeout_ms | 检测超时(毫秒) |
- 返回
- int 成功返回大于0,超时返回等于0,失败返回-1。
int detect_eth_cable |
( |
char * |
ifname | ) |
|
网卡状态检测
- 参数
-
- 返回
- int up返回true(1), down返回false(0)
int ether_atoe |
( |
const char * |
a, |
|
|
unsigned char * |
e |
|
) |
| |
将以太网地址串表示转换为二进制数据
- 参数
-
a | 字符串形式为xx:xx:xx:xx:xx:xx |
e | 二进制数据 |
- 返回
- int 如果转换成功则为TRUE,否则为FALSE
char* ether_etoa |
( |
const unsigned char * |
e, |
|
|
char * |
a |
|
) |
| |
将以太网地址二进制数据转换为字符串表示形式
- 参数
-
e | 二进制数据 |
a | 字符串形式为xx:xx:xx:xx:xx:xx |
- 返回
- char* 成功返回指向a的指针
int get_dns |
( |
char * |
dns1, |
|
|
int |
size1, |
|
|
char * |
dns2, |
|
|
int |
size2 |
|
) |
| |
获取本机指定的DNS服务器地址
- 参数
-
dns1 | DNS1地址缓存区 |
size1 | DNS1地址缓存区长度 |
dns2 | DNS2地址缓存区 |
size1 | DNS2地址缓存区长度 |
- 返回
- 若返回0则成功。返回-2则是因为DNS缓存区长度不足,需要的最小长度为16。
DNS缓存区传入函数前需要先初始化。
int get_gateway |
( |
char * |
dev, |
|
|
char * |
gway, |
|
|
int |
size |
|
) |
| |
获取指定网卡设备的网关
- 参数
-
dev | 网卡设备名 |
gway | 获取后的网关填充位置 |
size | 传入gway的大小 |
- 返回
- int 成功返回填充gway的长度, >0 成功,填充gway的长度, =0 没有找到设备节点, -1 失败,无该设备节点, -2 形参gway的空间长度不够,需要的最小长度见返回gway的首字节
int get_ip |
( |
char * |
dev, |
|
|
char * |
ip, |
|
|
int |
size |
|
) |
| |
获取指定网卡设备的ip地址
- 参数
-
dev | 网卡设备名 |
ip | 获取后的ip填充位置 |
size | 传入ip的大小 |
- 返回
- int 成功返回填充ip的长度, >0 成功,填充ip的长度, =0 没有找到设备节点, -1 失败,无该设备节点, -2 形参ip的空间长度不够,需要的最小长度见返回ip的首字节
int get_ip_by_domain |
( |
const char * |
trgtadd, |
|
|
char * |
ip, |
|
|
int |
size |
|
) |
| |
根据域名获取默认网卡设备的ip地址
- 参数
-
trgtadd | 域名 |
ip | 获取后的ip填充位置 |
size | 传入ip的大小 |
- 返回
- int 成功返回填充ip的长度, >0 成功,填充ip的长度, =0 没有找到设备节点, -1 失败,无该设备节点, -2 形参ip的空间长度不够,需要的最小长度见返回ip的首字节
int get_ip_info |
( |
char const * |
device, |
|
|
char * |
ip |
|
) |
| |
获取指定网卡设备的ip地址
- 参数
-
dev | 网卡设备名 |
ip | 获取后的ip填充位置,接口不创建大小,需要外部创建内存空间 |
- 返回
- 若返回0则成功。返回-1则失败.
int get_mac |
( |
char * |
dev, |
|
|
char * |
mac, |
|
|
int |
size |
|
) |
| |
获取指定网卡设备的mac地址
- 参数
-
dev | 网卡设备名 |
mac | 获取后的mac填充位置 |
size | 传入mac的大小 |
- 返回
- int 成功返回填充mac的长度, >0 成功,填充mac的长度, =0 没有找到设备节点, -1 失败,无该设备节点, -2 形参mac的空间长度不够,需要的最小长度见返回mac的首字节
int get_netmask |
( |
char * |
dev, |
|
|
char * |
mask, |
|
|
int |
size |
|
) |
| |
获取指定网卡设备的子网掩码
- 参数
-
dev | 网卡设备名 |
mask | 获取后的子网掩码填充位置 |
size | 传入mask的大小 |
- 返回
- int 成功返回填充mask的长度, >0 成功,填充mask的长度, =0 没有找到设备节点, -1 失败,无该设备节点, -2 形参mask的空间长度不够,需要的最小长度见返回mask的首字节
int if_updown |
( |
char * |
ifname, |
|
|
int |
flag |
|
) |
| |
打开关闭网卡
- 参数
-
ifname | 网卡名称,例:eth0、wlan0 |
flag | 网卡状态,0:关闭网卡,1:打开网卡 |
- 返回
- int 成功返回大于等于0,失败返回小于0
int set_dns |
( |
char * |
dns1, |
|
|
char * |
dns2 |
|
) |
| |
设置本机DNS服务器地址,DNS地址如114.114.114.114
- 参数
-
dns1 | DNS1服务器地址 |
dns2 | DNS2服务器地址 |
- 返回
- int 若成功则返回非负整数。
设置DNS地址实际是对/etc/resolv.conf文件进行读写,在写入DNS地址前会将文件截断为零长度。
int set_gateway |
( |
char * |
ifname, |
|
|
char * |
gateway |
|
) |
| |
设置网卡IP地址 子网掩码 网关等信息
- 参数
-
ifname | 网卡名称,例:eth0、wlan0 |
gateway | 网关地址,例:192.168.1.2 |
- 返回
- int 成功返回等于0,失败返回小于0
int set_mac_addr |
( |
char * |
ifname, |
|
|
char * |
mac |
|
) |
| |
设置网卡MAC地址
- 参数
-
ifname | 网卡名称,例:eth0、wlan0 |
mac | MAC地址,注意:mac地址参数为binary data数据,使用ether_etoa转换成标准的MAC地址字符串格式 |
- 返回
- int 成功返回大于等于0,失败返回小于0
int SetIfAddr |
( |
char * |
ifname, |
|
|
char * |
Ipaddr, |
|
|
char * |
mask |
|
) |
| |
设置网卡IP地址 子网掩码 网关等信息
- 参数
-
ifname | 网卡名称,例:eth0、wlan0 |
Ipaddr | IP地址,例:192.168.1.96 |
mask | 子网掩码,例:255.255.255.0 |
- 返回
- int 成功返回等于0,失败返回小于0
void udhcpc |
( |
char * |
net_interface | ) |
|
用udhcpc获取ip地址
- 参数
-
net_interface | 设备节点名称,如"wlan0" |