欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

c getaddrinfo函數

系統 2201 0

IPv4中使用 gethostbyname()函數 完成主機名到地址解析,這個函數僅僅支持IPv4,且不允許調用者指定所需地址類型的任何信息,返回的結構只包含了用于存儲IPv4地址的空間。IPv6中引入了getaddrinfo()的新API,它是協議無關的,既可用于IPv4也可用于IPv6。getaddrinfo函數能夠處理名字到地址以及服務到端口這兩種轉換,返回的是一個addrinfo的結構(列表)指針而不是一個地址清單。這些addrinfo結構隨后可由套接口函數直接使用。如此以來,getaddrinfo函數把協議相關性安全隱藏在這個庫函數內部。應用程序只要處理由getaddrinfo函數填寫的套接口地址結構。該函數在 POSIX規范中定義了。

1
? /*
頭文件:
linux下#include <netdb.h>??? windows下#include<ws2tcpip.h>
原型:
int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result );
功能:
能夠處理名字到地址以及服務到端口這兩種轉換。
參數:
hostname——一個主機名或者地址串(IPv4的點分十進制串或者IPv6的16進制串);
service——十進制的端口號,或者已定義的服務名稱如ftp、http等;
hints——可以是空指針,也可以是一個指向某個addrinfo結構體的指針,設置該參數以獲得期望返回的信息類型;
result——本函數通過result指針返回一個指向addrinfo結構體鏈表的指針。
返回值:
0——成功,非0——出錯。
*/

?

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
? /*
name:getaddrinfo.c
*/

#include
? <stdio.h>
#include ? <stdlib.h>
#include ? <sys/socket.h>
#include ? <netinet/in.h>
#include ? <netdb.h>
#include ? <string.h>
int ? main ( int argc, char **argv)
{
??? /* 判斷命令行參數個數 */
??? if (argc != 2)
??? {
??????? fprintf (stderr, "Usage: %s hostname\n" ,argv[0]);
??????? exit (1);
??? }
?
??? struct addrinfo *result, hint, *pointToResult;
??? char ipAddr[16];
??? int returnValue;
?
??? bzero (&hint, sizeof (hint));
?
??? /* 設置 hint 以獲取期望的類型 */
??? hint. ai_family = AF_INET;
??? hint. ai_socktype = SOCK_STREAM;
?
??? returnValue =? getaddrinfo (argv[1], NULL, &hint, &result);
?
??? /* 是否成功獲得信息 */
??? if (returnValue != 0)
??? {
??????? fprintf (stderr, "getaddrinfo: &s\n" , gai_strerror (returnValue));
??????? exit (1);
??? }
?
??? /* 將獲得的地址以表達格式輸出 */
??? for (pointToResult = result; pointToResult != NULL; pointToResult = pointToResult-> ai_next )
??? {
??????? inet_ntop(AF_INET, &((( struct sockaddr_in *)(pointToResult-> ai_addr ))-> sin_addr ), ipAddr, 16);
??????? printf ( "%s\n" , ipAddr);
??? }
?
??? freeaddrinfo (result);
??? exit (0);
}

/*
輸入:
./getaddrinfo ubuntu

輸出:

127.0.0.1
127.0.1.1
192.168.77.172
*/


?

參考:

http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881693.html

相關函數:

gethostbyname

gethostbyaddr

getservbyport

getservbyname

getaddrinfo

getnameinfo

c getaddrinfo函數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 奇米色偷偷 | 亚州va| 亚洲香蕉毛片久久网站老妇人 | 亚欧免费视频一区二区三区 | 色爱综合网 | 9999人体做爰大胆视频 | 97国产精品 | 日日摸天天碰中文字幕 | 国产精品二区三区 | 草莓视频午夜在线观影 | 午夜在线观看免费视频 | 91视频久久 | 亚洲日本在线观看视频 | 国产成人免费无庶挡视频 | 热99re久久精品2久久久 | 国产一区久久久 | 日韩成人在线播放 | 久草草视频在线观看免费高清 | 国产精品亚洲va在线观看 | 久久99国产亚洲精品观看 | 天天干天天爱天天操 | 欧美视频福利 | 日韩免费网站 | 国产亚洲欧美日本一二三本道 | 毛片2| 久久婷婷色一区二区三区 | 久久国产影院 | 91精品国产综合久久婷婷香蕉 | 亚洲午夜视频在线观看 | 国产一区二区三区久久久久久久久 | 激情五月色婷婷在线观看 | 日韩免费 | 亚洲欧美中文日韩在线v日本 | 日韩丝袜在线观看 | 欧美不卡视频 | 大喷水| 国产精品1区2区 | 国产亚洲精品日韩香蕉网 | 91福利在线观看 | 婷婷精品| 欧美国产精品一区 |