背景
应用程序中,聊得最多的话题就是网络,毕竟网络是前端和后端数据传输的核心,那怎么判断网络的好坏呢,那就是通过网速,网速受到很多方面的影响,例如:基站数、发起通讯数目、硬件性能等等。
在开发测试中,loading 动画并不能直观的展示出来网速的快慢,最直观的那就只有数字大小。
网络端口信息
C语言 getifaddrs() 函数,它可以查找到系统所有的网络接口的信息,包括以太网卡接口和回环接口等。
// ifaddrs 用于存储网络接口信息
struct ifaddrs
{
struct ifaddrs *ifa_next; /* Next item in list */
char *ifa_name; /* Name of interface(接口名称) */
unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */
struct sockaddr *ifa_addr; /* Address of interface */
struct sockaddr *ifa_netmask; /* Netmask of interface */
union
{
struct sockaddr *ifu_broadaddr; /* Broadcast address of interface */
struct sockaddr *ifu_dstaddr; /* Point-to-point destination address */
} ifa_ifu;
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
void *ifa_data; /* Address-specific data */
};
上图中:inStream: 下行流量 outStream: 上行流量
附加
网络连接中,我们偶尔也会碰到网络类型的切换,比如蜂窝网络切换wifi、无网络状态等等。AFNetworking库中AFNetworkReachabilityManager已经很好的封装了监测网络类型转变的Block。
但是,通过#import <Network/Network.h>库中的path_monitor.h也可以实现对网络类型转变的监听。
创建全局的接口监视器对象path_monitor_t,通过nw_path_monitor_set_update_handler()函数回调监听获取端口类型以便见识网络类型的变换。