c语言系统库之socket

2017-04-19  本文已影响0人  xuanskyer

关于socket 编程的一些函数

getaddrinfo

据传说包含头文件 #include <netdb.h>中
getaddrinfo函数允许将一个主机名字和服务名字映射到一个地址。
由getaddrinfo返回的所有存储空间都是动态获取的,这些存储空间必须通过调用freeaddrinfo返回给系统。

int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result );
struct addrinfo {
     int ai_flags; /* customize behavior */
     int ai_family; /* address family */
     int ai_socktype; /* socket type */
     int ai_protocol; /* protocol */
     socklen_t ai_addrlen; /* length in bytes of address */
     struct sockaddr *ai_addr; /* address */
     char *ai_canonname; /* canonical name of host */
     struct addrinfo *ai_next; /* next in list */
     .
     .
     .
};
ai_family指定了地址族,可取值如下: 
AF_INET          2            //IPv4 
AF_INET6        23          //  IPv6 
AF_UNSPEC        0        //    协议无关
ai_socktype指定我套接字的类型 
SOCK_STREAM        1           // 流 
SOCK_DGRAM        2            //数据报

freeaddrinfo

void freeaddrinfo( struct addrinfo *ai );

ai参数应指向由getaddrinfo返回的第一个addrinfo结构。这个连表中的所有结构以及它们指向的任何动态存储空间都被释放掉。

参考

上一篇下一篇

猜你喜欢

热点阅读