青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不會(huì)飛的鳥(niǎo)

2010年12月10日 ... 不鳥(niǎo)他們!??! 我要用自己開(kāi)發(fā)的分布式文件系統(tǒng)、分布式調(diào)度系統(tǒng)、分布式檢索系統(tǒng), 做自己的搜索引擎?。。〈篝~(yú)有大志?。。?---楊書(shū)童

socket編程-預(yù)備知識(shí)

1. 預(yù)備知識(shí)

1.1. 網(wǎng)絡(luò)字節(jié)序

我們已經(jīng)知道,內(nèi)存中的多字節(jié)數(shù)據(jù)相對(duì)于內(nèi)存地址有大端和小端之分,磁盤(pán)文件中的多字節(jié)數(shù)據(jù)相對(duì)于文件中的偏移地址也有大端小端之分。網(wǎng)絡(luò)數(shù)據(jù)流同樣有大端小端之分,那么如何定義網(wǎng)絡(luò)數(shù)據(jù)流的地址呢?發(fā)送主機(jī)通常將發(fā)送緩沖區(qū)中的數(shù)據(jù)按內(nèi)存地址從低到高的順序發(fā)出,接收主機(jī)把從網(wǎng)絡(luò)上接到的字節(jié)依次保存在接收緩沖區(qū)中,也是按內(nèi)存地址從低到高的順序保存,因此,網(wǎng)絡(luò)數(shù)據(jù)流的地址應(yīng)這樣規(guī)定:先發(fā)出的數(shù)據(jù)是低地址,后發(fā)出的數(shù)據(jù)是高地址。

TCP/IP協(xié)議規(guī)定,網(wǎng)絡(luò)數(shù)據(jù)流應(yīng)采用大端字節(jié)序,即低地址高字節(jié)。例如上一節(jié)的UDP段格式,地址0-1是16位的源端口號(hào),如果這個(gè)端口號(hào)是1000(0x3e8),則地址0是0x03,地址1是0xe8,也就是先發(fā)0x03,再發(fā)0xe8,這16位在發(fā)送主機(jī)的緩沖區(qū)中也應(yīng)該是低地址存0x03,高地址存0xe8。但是,如果發(fā)送主機(jī)是小端字節(jié)序的,這16位被解釋成0xe803,而不是1000。因此,發(fā)送主機(jī)把1000填到發(fā)送緩沖區(qū)之前需要做字節(jié)序的轉(zhuǎn)換。同樣地,接收主機(jī)如果是小端字節(jié)序的,接到16位的源端口號(hào)也要做字節(jié)序的轉(zhuǎn)換。如果主機(jī)是大端字節(jié)序的,發(fā)送和接收都不需要做轉(zhuǎn)換。同理,32位的IP地址也要考慮網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序的問(wèn)題。

為使網(wǎng)絡(luò)程序具有可移植性,使同樣的C代碼在大端和小端計(jì)算機(jī)上編譯后都能正常運(yùn)行,可以調(diào)用以下庫(kù)函數(shù)做網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序的轉(zhuǎn)換。

#include <arpa/inet.h>

uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

這些函數(shù)名很好記,h表示host,n表示network,l表示32位長(zhǎng)整數(shù),s表示16位短整數(shù)。例如htonl表示將32位的長(zhǎng)整數(shù)從主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序,例如將IP地址轉(zhuǎn)換后準(zhǔn)備發(fā)送。如果主機(jī)是小端字節(jié)序,這些函數(shù)將參數(shù)做相應(yīng)的大小端轉(zhuǎn)換然后返回,如果主機(jī)是大端字節(jié)序,這些函數(shù)不做轉(zhuǎn)換,將參數(shù)原封不動(dòng)地返回。

1.2. socket地址的數(shù)據(jù)類型及相關(guān)函數(shù) 請(qǐng)點(diǎn)評(píng)

socket API是一層抽象的網(wǎng)絡(luò)編程接口,適用于各種底層網(wǎng)絡(luò)協(xié)議,如IPv4、IPv6,以及后面要講的UNIX Domain Socket。然而,各種網(wǎng)絡(luò)協(xié)議的地址格式并不相同,如下圖所示:

圖 37.1. sockaddr數(shù)據(jù)結(jié)構(gòu)

sockaddr數(shù)據(jù)結(jié)構(gòu)

IPv4和IPv6的地址格式定義在netinet/in.h中,IPv4地址用sockaddr_in結(jié)構(gòu)體表示,包括16位端口號(hào)和32位IP地址,IPv6地址用sockaddr_in6結(jié)構(gòu)體表示,包括16位端口號(hào)、128位IP地址和一些控制字段。UNIX Domain Socket的地址格式定義在sys/un.h中,用sockaddr_un結(jié)構(gòu)體表示。各種socket地址結(jié)構(gòu)體的開(kāi)頭都是相同的,前16位表示整個(gè)結(jié)構(gòu)體的長(zhǎng)度(并不是所有UNIX的實(shí)現(xiàn)都有長(zhǎng)度字段,如Linux就沒(méi)有),后16位表示地址類型。IPv4、IPv6和UNIX Domain Socket的地址類型分別定義為常數(shù)AF_INET、AF_INET6、AF_UNIX。這樣,只要取得某種sockaddr結(jié)構(gòu)體的首地址,不需要知道具體是哪種類型的sockaddr結(jié)構(gòu)體,就可以根據(jù)地址類型字段確定結(jié)構(gòu)體中的內(nèi)容。因此,socket API可以接受各種類型的sockaddr結(jié)構(gòu)體指針做參數(shù),例如bind、accept、connect等函數(shù),這些函數(shù)的參數(shù)應(yīng)該設(shè)計(jì)成void *類型以便接受各種類型的指針,但是sock API的實(shí)現(xiàn)早于ANSI C標(biāo)準(zhǔn)化,那時(shí)還沒(méi)有void *類型,因此這些函數(shù)的參數(shù)都用struct sockaddr *類型表示,在傳遞參數(shù)之前要強(qiáng)制類型轉(zhuǎn)換一下,例如:

struct sockaddr_in servaddr;
/* initialize servaddr */
bind(listen_fd, (struct sockaddr *)&servaddr, sizeof(servaddr));

本節(jié)只介紹基于IPv4的socket網(wǎng)絡(luò)編程,sockaddr_in中的成員struct in_addr sin_addr表示32位的IP地址。但是我們通常用點(diǎn)分十進(jìn)制的字符串表示IP地址,以下函數(shù)可以在字符串表示和in_addr表示之間轉(zhuǎn)換。

字符串轉(zhuǎn)in_addr的函數(shù):

#include <arpa/inet.h>

int inet_aton(const char *strptr, struct in_addr *addrptr);
in_addr_t inet_addr(const char *strptr);
int inet_pton(int family, const char *strptr, void *addrptr);

in_addr轉(zhuǎn)字符串的函數(shù):

char *inet_ntoa(struct in_addr inaddr);
const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

其中inet_pton和inet_ntop不僅可以轉(zhuǎn)換IPv4的in_addr,還可以轉(zhuǎn)換IPv6的in6_addr,因此函數(shù)接口是void *addrptr。

posted on 2011-07-03 14:00 不會(huì)飛的鳥(niǎo) 閱讀(403) 評(píng)論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产女人aaa毛片在线| 亚洲天堂久久| 欧美日韩在线视频观看| 欧美福利在线| 欧美啪啪成人vr| 欧美高清视频在线播放| 欧美日韩福利| 国产精品自拍网站| 亚洲福利免费| 亚洲小说区图片区| 久久久人成影片一区二区三区观看| 久久久久久久久久久久久9999| 你懂的亚洲视频| 日韩天堂av| 欧美在线你懂的| 欧美va日韩va| 国产日韩欧美在线| 99ri日韩精品视频| 久久久久国产精品一区| 亚洲欧洲一区| 欧美在线观看你懂的| 欧美韩日一区二区| 国产欧美精品日韩精品| 在线观看欧美激情| 亚洲欧美日韩精品久久久久| 麻豆成人小视频| 亚洲天堂av综合网| 欧美电影在线| 精品999在线观看| 亚洲欧美日韩国产另类专区| 欧美大片专区| 久久高清一区| 国产欧美日韩一区二区三区在线| 亚洲精美视频| 久久久久国产精品一区| 一本色道久久综合狠狠躁的推荐| 久久免费偷拍视频| 国产精品视区| 亚洲一区二区在线看| 最新中文字幕亚洲| 蜜臀久久99精品久久久久久9| 国产麻豆成人精品| 亚洲一区日本| 亚洲日韩中文字幕在线播放| 欧美一级视频| 亚洲一区欧美激情| 欧美日韩另类一区| 日韩亚洲欧美一区| 亚洲国产成人av在线| 久久超碰97中文字幕| 国产精品亚洲аv天堂网| 亚洲视频碰碰| aa级大片欧美三级| 欧美日本一区二区视频在线观看| 亚洲国产一二三| 亚洲国产精品悠悠久久琪琪| 久久婷婷国产综合精品青草| 国产真实久久| 老色批av在线精品| 久久久av水蜜桃| 亚洲成色777777女色窝| 欧美xart系列高清| 欧美成人精品一区二区| 日韩午夜在线观看视频| 亚洲人体一区| 国产精品成人一区二区艾草| 亚洲影院一区| 性欧美8khd高清极品| 狠狠色综合色综合网络| 欧美福利在线| 欧美日韩亚洲一区二区三区| 午夜精品国产| 久久久青草青青国产亚洲免观| 亚洲高清视频在线| 99视频+国产日韩欧美| 国产精品色午夜在线观看| 香港久久久电影| 久久久久久久久岛国免费| 91久久精品美女高潮| 在线视频亚洲欧美| 含羞草久久爱69一区| 亚洲欧洲日夜超级视频| 国产精品嫩草99a| 久久久久免费视频| 免费不卡中文字幕视频| 一区二区久久久久久| 亚洲欧美中文字幕| ●精品国产综合乱码久久久久| 亚洲黄色一区二区三区| 国产精品嫩草久久久久| 欧美丰满少妇xxxbbb| 国产精品国产三级国产普通话蜜臀| 久久成人亚洲| 欧美日韩国产电影| 久久伊伊香蕉| 国产精品福利在线观看网址| 久久综合九色综合欧美就去吻| 欧美日韩国产精品一区| 久久婷婷久久一区二区三区| 欧美国产日韩精品免费观看| 欧美一区二区三区的| 欧美va日韩va| 久久免费视频在线观看| 欧美先锋影音| 亚洲欧洲另类| 在线精品在线| 性欧美xxxx视频在线观看| 欧美11—12娇小xxxx| 亚洲免费在线视频| 老司机精品福利视频| 欧美一区二区三区免费视| 欧美日本不卡| 亚洲第一伊人| 激情视频亚洲| 午夜精品av| 亚洲综合色自拍一区| 欧美高清视频在线| 欧美成人精品高清在线播放| 国产精品视频| 亚洲影视九九影院在线观看| 在线视频亚洲| 欧美日韩国产在线看| 亚洲国产精品久久久久秋霞不卡 | 亚洲电影自拍| 激情婷婷亚洲| 性欧美超级视频| 亚洲欧美影院| 国产精品萝li| 亚洲亚洲精品在线观看| 亚洲一区二区三区欧美 | 久久av免费一区| 欧美一级视频免费在线观看| 欧美三日本三级少妇三2023| 最新中文字幕一区二区三区| 亚洲国产成人av在线| 久久免费一区| 欧美国产亚洲精品久久久8v| 亚洲大片在线| 欧美寡妇偷汉性猛交| 亚洲欧洲日本一区二区三区| 亚洲蜜桃精久久久久久久 | 亚洲大片一区二区三区| 免费成人激情视频| 亚洲国产精品成人va在线观看| 亚洲国产免费| 欧美黄在线观看| 日韩一区二区福利| 性欧美精品高清| 狠狠入ady亚洲精品经典电影| 欧美在线观看网站| 老牛影视一区二区三区| 亚洲精品1区2区| 欧美日韩一区二区三| 亚洲伊人网站| 欧美ed2k| 亚洲视频免费| 国产亚洲综合性久久久影院| 久久久久久久尹人综合网亚洲| 欧美电影打屁股sp| 亚洲午夜国产一区99re久久| 国产精品免费福利| 久久久夜夜夜| 一区二区久久久久| 久久久久久尹人网香蕉| 亚洲日本无吗高清不卡| 国产精品国产三级欧美二区| 欧美在线免费观看亚洲| 亚洲日本一区二区| 欧美在线中文字幕| 亚洲人成7777| 国产女精品视频网站免费| 久久综合九色综合欧美狠狠| 亚洲午夜国产一区99re久久 | 亚洲国产精品va在看黑人| 在线一区日本视频| 一区二区三区在线视频观看| 欧美日韩国产精品一区二区亚洲| 午夜精品久久一牛影视| 亚洲黄色一区| 老色鬼精品视频在线观看播放| 中文一区二区| 91久久在线播放| 国产伊人精品| 欧美性天天影院| 免费亚洲视频| 亚洲综合色在线| 亚洲人在线视频| 麻豆freexxxx性91精品| 午夜一级在线看亚洲| 日韩视频在线永久播放| 精品成人一区二区三区| 国产农村妇女毛片精品久久莱园子| 欧美高清在线精品一区| 久久精品官网| 欧美一级日韩一级| 亚洲图片在线观看| 一本色道久久综合亚洲精品不| 亚洲成人直播| 欧美福利精品| 欧美.com|