CZeroMQ之ziflist用于获取系统上可用的网络接口API(list of network interfaces available on system)
一、Ziflist API如下:
<span style="font-size:14px;">// This is a stable class, and may not change except for emergencies. It // is provided in stable builds. // Get a list of network interfaces currently defined on the system CZMQ_EXPORT ziflist_t * ziflist_new (void); // Destroy a ziflist instance CZMQ_EXPORT void ziflist_destroy (ziflist_t **self_p); // Reload network interfaces from system CZMQ_EXPORT void ziflist_reload (ziflist_t *self); // Return the number of network interfaces on system CZMQ_EXPORT size_t ziflist_size (ziflist_t *self); // Get first network interface, return NULL if there are none CZMQ_EXPORT const char * ziflist_first (ziflist_t *self); // Get next network interface, return NULL if we hit the last one CZMQ_EXPORT const char * ziflist_next (ziflist_t *self); // Return the current interface IP address as a printable string CZMQ_EXPORT const char * ziflist_address (ziflist_t *self); // Return the current interface broadcast address as a printable string CZMQ_EXPORT const char * ziflist_broadcast (ziflist_t *self); // Return the current interface network mask as a printable string CZMQ_EXPORT const char * ziflist_netmask (ziflist_t *self); // Return the list of interfaces. CZMQ_EXPORT void ziflist_print (ziflist_t *self); // Self test of this class. CZMQ_EXPORT void ziflist_test (bool verbose);</span>二、使用举例
1、zifnet.c
#include<czmq.h> #include<stdio.h> int main() { int verbose = 1; ziflist_t *iflist = ziflist_new (); assert (iflist); size_t items = ziflist_size (iflist); if (verbose) { printf ("ziflist: interfaces=%zu\n", ziflist_size (iflist)); const char *name = ziflist_first (iflist); while (name) { printf (" - name=%s address=%s netmask=%s broadcast=%s\n", name, ziflist_address (iflist), ziflist_netmask (iflist), ziflist_broadcast (iflist)); name = ziflist_next (iflist); } } ziflist_reload (iflist); assert (items == ziflist_size (iflist)); ziflist_destroy (&iflist); return 0; }2、编译
[root@localhost chiutest]# gcc -o zifnet zifnet.c -lzmq -lczmq [root@localhost chiutest]#
3、运行测试
[root@localhost chiutest]# ./zifnet ziflist: interfaces=2 - name=eth0 address=192.168.1.110 netmask=255.255.255.0 broadcast=192.168.1.255 - name=virbr0 address=192.168.122.1 netmask=255.255.255.0 broadcast=192.168.122.255 [root@localhost chiutest]#
更多文章请查看:http://blog.csdn.net/yuesichiu
欢迎转载,转载请注明出处