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
欢迎转载,转载请注明出处