网络编程学习笔记(uname函数)

来源:互联网 发布:数据安全防护体系 编辑:程序博客网 时间:2024/05/16 05:23

函数uname返回当前主机的名字。经常与gethostbyname一起用来确定本地主机的IP地址。其原型为:

#include <sys/utsname.h>int uname(struct utsname *name);

成功返回非0,失败返回-1

此函数填装结构utsnamee,其结构体定义为:

#define UTS_NAMESIZE 16#define UTS_NODESIZE 256struct utsname {      char sysname[_UTS_NAMESIZE];//name of the oprating system      char nodename[_UTS_NODESIZE];//name of this node      char release[_UTS_NAMESIZE];//O.S release level      char version[_UTS_NAMESIZE];// O.S version level       char machine[_UTS_NAMESIZE];//hardware type};

代码如下:

#include <netdb.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/utsname.h>#define BUFLEN 128char ** my_addrs(int *addrtype){struct hostent *hptr;struct utsname myname;if (uname(&myname) < 0) return NULL;if ((hptr = gethostbyname(myname.nodename)) == NULL) return NULL;*addrtype = hptr->h_addrtype;return hptr->h_addr_list;}int main(int argc, char **argv){int type;char *paddr = *my_addrs(&type);char buf[BUFLEN];printf("type=%d, haddr=%s\n", type,inet_ntop(AF_INET, paddr, buf, sizeof(buf)));return 0;}

输出为:


0 0
原创粉丝点击