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

?7.3.2 客戶機(jī)API函數(shù)
?
?客戶機(jī)要簡單得多,建立成功連接所需的步驟也要少得多。客戶機(jī)只需三步操作:
1) 用s o c k e t或W S A S o c k e t創(chuàng)建一個套接字。
2) 解析服務(wù)器名(以基層協(xié)議為準(zhǔn))。
3) 用c o n n e c t或W S A C o n n e c t初始化一個連接。

TCP狀態(tài)
作為一名Wi n s o c k程序員,通常沒必要了解實際的T C P狀態(tài)。但了解T C P狀態(tài),就能更好地理解Winsock API調(diào)用如何對基層協(xié)議中的改變產(chǎn)生影響。此外,許多程序員在關(guān)閉套接字時,會碰到一個常見問題;圍繞套接字關(guān)閉的T C P狀態(tài)是我們目前最感興趣的問題。

對每個套接字來說,它的初始狀態(tài)都是C L O S E D。若客戶機(jī)初始化了一個連接,就會向服務(wù)器發(fā)送一個S Y N包,同時將客戶機(jī)套接字狀態(tài)置為S Y N _ S E N T。服務(wù)器收到S Y N包后,會發(fā)出一個“ S Y N - A C K”包。作為客戶機(jī),需要用一個A C K包對它做出反應(yīng)。此時,客戶機(jī)的套接字會變成E S TA B L I S H E D狀態(tài)。如果服務(wù)器一直不發(fā)送“ S Y N - A C K”包,客戶機(jī)就會超時,并返回C L O S E D狀態(tài)。

若一個服務(wù)器的套接字同一個本地接口和端口綁定起來,并在它上面進(jìn)行監(jiān)聽,那么套接字的狀態(tài)便是L I S T E N。客戶機(jī)試圖與之連接時,服務(wù)器就會收到一個S Y N包,并用一個S Y N - A C K包做出響應(yīng)。服務(wù)器套接字的狀態(tài)就變成S Y N _ R C V D。最后,客戶機(jī)發(fā)出一個A C K包,令服務(wù)器套接字的狀態(tài)變成E S TA B L I S H E D。

一旦應(yīng)用處于E S TA B L I S H E D狀態(tài),可通過兩種方法來關(guān)閉它。如果由應(yīng)用程序來關(guān)閉,便叫作“主動套接字關(guān)閉”;否則,套接字的關(guān)閉便是被動的。圖7 - 2對兩種關(guān)閉方法進(jìn)行了解釋。如主動關(guān)閉,應(yīng)用程序便會發(fā)出一個F I N包。應(yīng)用程序調(diào)用c l o s e s o c k e t或s h u t d o w n時(把S D _ S E N D當(dāng)作第二個參數(shù)),會向?qū)Ψ桨l(fā)出一個F I N包,而且套接字的狀態(tài)則變成F I N _ WA I T _ 1。正常情況下,通信對方會回應(yīng)一個A C K包,我們的套接字的狀態(tài)
隨之變成F I N _ WA I T _ 2。如對方也關(guān)閉了連接,便會發(fā)出一個F I N包,我們的機(jī)器則會響應(yīng)一個A C K包,并將己方套接字的狀態(tài)置為T I M E _ WA I T。

T I M E _ WA I T狀態(tài)也叫作2 M S L等待狀態(tài)。其中, M S L代表“分段最長生存時間”(Maximum Segment Lifetime),表示一個數(shù)據(jù)包在丟棄之前,可在網(wǎng)絡(luò)上存在多長時間。
每個I P包都含有一個“生存時間”(T T L)字段,若它遞減為0,包便會被丟棄。一個包經(jīng)過網(wǎng)絡(luò)上的每個路由器時, T T L 值都會減1 ,然后繼續(xù)傳遞。一旦應(yīng)用程序進(jìn)入T I M E _ WA I T狀態(tài),那么就會一直持續(xù)M S L時間的兩倍之久。這樣一來, T C P就可以在最后一個A C K丟失的前提下,重新發(fā)送它,也就是說, F I N會被重新傳送出去。M S L時間兩倍之久的等待狀態(tài)結(jié)束之后,套接字便進(jìn)入C L O S E D狀態(tài)。
圖7-2 TCP套接字的關(guān)閉狀態(tài)

套接字主動關(guān)閉
關(guān)閉套接字
發(fā)送: FIN----->FIN_WAIT_1--接收:ACK-->FIN_WAIT_2----接收: FIN發(fā)送: ACK--->TIME_WAIT(2MSL超時)----->CLOSED


套接字主動關(guān)閉
關(guān)閉套接字
發(fā)送: FIN----->接收: FIN發(fā)送: ACK---->CLOSING--接收: ACK-->TIME_WAIT(2MSL超時)----->CLOSED


套接字主動關(guān)閉
關(guān)閉套接字
發(fā)送: FIN----->接收: FIN_ACK發(fā)送: ACK----->TIME_WAIT(2MSL超時)----->CLOSED


套接字被動關(guān)閉
接收: FIN
發(fā)送: ACK------>CLOSE_WAIT--關(guān)閉套接字發(fā)送: FIN-->LAST_ACK------->CLOSED

T I M E _ WA I T狀態(tài)也叫作2 M S L等待狀態(tài)。其中, M S L代表“分段最長生存時間”(Maximum Segment Lifetime),表示一個數(shù)據(jù)包在丟棄之前,可在網(wǎng)絡(luò)上存在多長時間。
每個I P包都含有一個“生存時間”(T T L)字段,若它遞減為0,包便會被丟棄。一個包經(jīng)過網(wǎng)絡(luò)上的每個路由器時, T T L 值都會減1 ,然后繼續(xù)傳遞。一旦應(yīng)用程序進(jìn)入T I M E _ WA I T狀態(tài),那么就會一直持續(xù)M S L時間的兩倍之久。這樣一來, T C P就可以在最后一個A C K丟失的前提下,重新發(fā)送它,也就是說, F I N會被重新傳送出去。M S L時間兩倍之久的等待狀態(tài)結(jié)束之后,套接字便進(jìn)入C L O S E D狀態(tài)?

采取主動關(guān)閉措施時,有兩個路徑會進(jìn)入T I M E _ WA I T狀態(tài)。在我們以前的討論中,
只有一方發(fā)出一個F I N,并接收一個A C K響應(yīng)。然而,另一方仍然可以自由地發(fā)送數(shù)據(jù),
直到它也被關(guān)閉為止。因此,需要兩個路徑發(fā)揮作用。在一個路徑中(即同步關(guān)閉),一臺計算機(jī)和它的通信對方會同時要求關(guān)閉;計算機(jī)向?qū)Ψ剿统鲆粋€F I N數(shù)據(jù)包,并從它那里接收一個F I N數(shù)據(jù)包。隨后,計算機(jī)會發(fā)出一個A C K數(shù)據(jù)包,對對方的F I N包做出響應(yīng),并將自己的套接字置為C L O S I N G狀態(tài)。計算機(jī)從對方那里接收到最后一個A C K包之后,它的套接字狀態(tài)會變成T I M E _ WA I T。?

主動關(guān)閉時,另一個路徑其實就是同步關(guān)閉的變體:套接字從F I N _ WA I T _ 1狀態(tài)直接變成T I M E _ WA I T。若應(yīng)用程序發(fā)出一個F I N數(shù)據(jù)包,但幾乎同時便從對方那里接收到一個F I N - A C K包,這種情況就會發(fā)生。在這種情況下,對方會確認(rèn)收到應(yīng)用程序的F I N包,并送出自己的F I N包。對于這個包,應(yīng)用程序會用一個A C K包做出響應(yīng)。
T I M E _ WA I T狀態(tài)的主要作用是在T C P連接處于2 M S L等待狀態(tài)的時候,規(guī)定用于建立那個連接的一對套接字不可被拒絕。這對套接字由本地I P端口以及遠(yuǎn)程I P端口組成。對某些T C P實施方案來說,它們不允許拒絕處于T I M E _ WA I T狀態(tài)下的套接字對中的任何端口號。在微軟的方案中,不會存在這個問題。然而,若試圖通過一對已處于T I M E _ WA I T狀態(tài)的套接字建立連接,就會失敗,并返回W S A E A D D R I N U S E錯誤。要解決這一問題(除了等待使用那個本地端口來脫離T I M E _ WA I T狀態(tài)的套接字對),一個辦法是使用套接字選
項S O _ R E F U S E A D D R,我們將在第9章對這個選項進(jìn)行詳細(xì)討論。
被動關(guān)閉情況下,應(yīng)用程序會從對方那里接收一個F I N包,并用一個A C K包做出響應(yīng)。此時,應(yīng)用程序的套接字會變成C L O S E _ WA I T狀態(tài)。由于對方已關(guān)閉自己的套接字,所以不能再發(fā)送數(shù)據(jù)了。但應(yīng)用程序卻不同,它能一直發(fā)送數(shù)據(jù),直到對方的套接字已關(guān)閉為止。要想關(guān)閉對方的連接,應(yīng)用程序需要發(fā)出自己的F I N,令應(yīng)用程序的套接字狀態(tài)變成L A S T _ A C K。應(yīng)用程序從對方收到一個A C K包后,它的套接字就會逆轉(zhuǎn)成C L O S E D狀態(tài)。
要想了解T C P / I P協(xié)議的有關(guān)詳情,請參閱RFC 793 文件。可在h t t p : / / w w w. r f c -e d i t o r. o rg那里找到這份文件。

c o n n e c t函數(shù)和W S A C o n n e c t函數(shù)
最后一步就是連接。這是通過調(diào)用c o n n e c t函數(shù)或W S A C o n n e c t函數(shù)來完成的。我們先來看看該函數(shù)的Winsock 1版本,其定義如下:

int connect(
???????SOCKET s,
???????const struct sockaddr FAR * addr,
???????int namelen
??????);
?
?該函數(shù)的參數(shù)是相當(dāng)清楚的: s是即將在其上面建立連接的那個有效T C P套接字; n a m e是針對T C P(說明連接的服務(wù)器)的套接字地址結(jié)構(gòu)( S O C K A D D R _ I N);n a m e l e n則是名字參數(shù)的長度。Winsock 2版本中,它的定義是這樣的:

int WSAConnect(
????????SOCKET s,
????????const struct sockaddr FAR * addr,
????????int namelen,
????????LPWSABUF?lpCallerData,
????????LPWSABUF?lpCalleeData,
????????LPQOS???lpSQOS,
????????LPQOS???lpGQOS
???????);
???????
前三個參數(shù)和connect API函數(shù)的參數(shù)是完全一樣的。另外兩個參數(shù)—l p C a l l e r D a t a和l p C a l l e e D a t a,是字串緩沖區(qū),用于收發(fā)請求連接時的數(shù)據(jù)。l p C a l l e r D a t a參數(shù)是指向緩沖區(qū)的指針,緩沖區(qū)內(nèi)包含客戶機(jī)向服務(wù)器發(fā)出的請求連接的數(shù)據(jù)。l p C a l l e e D a t a參數(shù)則指向另一個緩沖區(qū),區(qū)內(nèi)包含服務(wù)器向客戶機(jī)返回的建立連接時的數(shù)據(jù)。這兩個參數(shù)都是W S A B U F結(jié)構(gòu),
因此,若是l p C a l l e r D a t a,l e n字段應(yīng)該設(shè)為b u f字段中準(zhǔn)備傳輸?shù)臄?shù)據(jù)長度。若是l p C a l l e e D a t a,l e n字段則代表b u f中的緩沖區(qū)長度,設(shè)為從服務(wù)器返回的數(shù)據(jù)長度。最后兩個參數(shù)—l p S Q O S和l p G Q O S,表示Q O S結(jié)構(gòu),該結(jié)構(gòu)對即將建立的連接上收發(fā)數(shù)據(jù)所需要的帶寬進(jìn)行了定義。
l p Q O S參數(shù)用于指定套接字s需要的服務(wù)質(zhì)量,而l p G Q O S則用于指定套接字組所需要的服務(wù)質(zhì)量。目前,尚未提供對套接字組的支持。若l p Q O S是空值,則表明沒有某應(yīng)用專用的Q O S。
如果你想連接的計算機(jī)沒有監(jiān)聽指定端口這一進(jìn)程, c o n n e c t調(diào)用就會失敗,并發(fā)生錯誤W S A E C O N N R E F U S E D。另一個錯誤可能是W S A E T I M E D O U T,這種情況一般發(fā)生在試圖連接的計算機(jī)不能用時(亦可能因為到主機(jī)之間的路由上出現(xiàn)硬件故障或主機(jī)目前不在網(wǎng)上)。

Posted on 2006-09-07 22:31 艾凡赫 閱讀(690) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产手机视频一区二区| 欧美夜福利tv在线| 亚洲一区免费网站| 国产精品亚洲аv天堂网| 性做久久久久久久免费看| 久久国产精品久久久久久电车| 国产在线欧美| 女女同性女同一区二区三区91| 亚洲欧洲在线看| 性娇小13――14欧美| 在线观看成人一级片| 欧美伦理视频网站| 亚洲男人av电影| 美女国内精品自产拍在线播放| 亚洲精品看片| 国产美女一区| 欧美激情视频在线播放 | 免费观看日韩av| 夜夜夜精品看看| 久久亚洲精品网站| 亚洲网站在线看| 伊人久久噜噜噜躁狠狠躁| 欧美日韩国产综合视频在线观看 | 欧美成人国产一区二区| 一区二区三区欧美在线观看| 国产一区二区按摩在线观看| 欧美激情1区| 欧美一区二区三区免费观看视频| 欧美国产日韩一区| 欧美在线视频日韩| 日韩午夜av电影| 国产综合自拍| 欧美亚一区二区| 美女被久久久| 先锋影音一区二区三区| 亚洲精品一区二区三区福利| 久久网站热最新地址| 亚洲一区二区av电影| 亚洲国产精品视频| 国产一区二区三区自拍| 国产精品久久久久久五月尺| 免费观看成人网| 久久国产高清| 亚洲嫩草精品久久| 日韩视频精品在线| 亚洲黄色视屏| 欧美二区在线看| 久久久99精品免费观看不卡| 亚洲自拍偷拍福利| 中日韩高清电影网| 亚洲精品在线三区| 亚洲电影免费观看高清完整版| 国产欧美日韩综合一区在线观看 | 欧美日韩在线高清| 鲁大师影院一区二区三区| 欧美在线视频a| 亚洲综合社区| 亚洲性线免费观看视频成熟| 日韩一区二区免费高清| 亚洲精品男同| 亚洲剧情一区二区| 亚洲激情在线视频| 最新69国产成人精品视频免费| 欧美成人在线免费观看| 欧美**人妖| 免费在线欧美黄色| 你懂的国产精品| 欧美va亚洲va香蕉在线| 欧美大片va欧美在线播放| 免费不卡在线观看av| 另类欧美日韩国产在线| 美女网站在线免费欧美精品| 久久中文精品| 女人色偷偷aa久久天堂| 亚洲高清资源| 日韩午夜av| 中文高清一区| 午夜欧美精品| 久久久91精品国产一区二区精品| 久久精品欧美日韩精品| 久久亚洲私人国产精品va媚药| 美女精品国产| 欧美精品激情在线| 国产精品久久久久高潮| 国产欧美日韩一区| 在线观看91精品国产麻豆| 亚洲国产日韩欧美在线动漫| 日韩手机在线导航| 亚洲欧美日产图| 久久狠狠婷婷| 欧美激情视频给我| 日韩午夜av电影| 亚洲欧洲99久久| 久久综合色影院| 欧美区亚洲区| 国产伦精品一区二区三区视频孕妇 | 欧美欧美全黄| 国产精品免费一区二区三区在线观看 | 久久精品二区| 欧美激情国产日韩| 国产精品免费aⅴ片在线观看| 国产一区二区三区久久悠悠色av | 国语精品中文字幕| 亚洲黄色大片| 亚洲天堂av综合网| 久久精品人人做人人爽| 欧美激情精品久久久久久蜜臀| 亚洲另类在线一区| 性欧美1819性猛交| 欧美大片在线影院| 国产日产欧产精品推荐色 | 欧美一级在线视频| 欧美88av| 亚洲免费一在线| 欧美a级理论片| 国产乱肥老妇国产一区二| 亚洲国产mv| 性欧美暴力猛交69hd| 亚洲国产一区二区视频| 午夜精品久久久久久| 欧美激情视频网站| 国内自拍视频一区二区三区| 一本久久综合| 欧美风情在线观看| 午夜在线电影亚洲一区| 欧美精品一区二区三| 黄色国产精品| 欧美亚洲一区二区在线| 亚洲美女精品成人在线视频| 欧美在线首页| 国产精品美女www爽爽爽视频| 亚洲免费久久| 蜜臀a∨国产成人精品| 亚洲一区二区高清| 欧美日韩国产限制| 伊人久久大香线| 久久成人精品电影| 亚洲国产日韩欧美在线图片| 欧美伊人久久久久久午夜久久久久 | 在线亚洲欧美专区二区| 欧美jizz19性欧美| 在线看成人片| 久久看片网站| 欧美在线观看视频| 国产精品夜夜夜| 亚洲一区欧美一区| 亚洲精品久久久蜜桃| 欧美高清在线观看| 亚洲国产欧美在线| 欧美88av| 久久在线免费观看视频| 伊人久久综合97精品| 久久久亚洲欧洲日产国码αv| 亚洲天堂av在线免费| 欧美特黄一级| 亚洲特级片在线| 一区二区精品| 国产精品扒开腿做爽爽爽视频 | 国内揄拍国内精品少妇国语| 欧美在线不卡| 欧美一区二区三区视频免费播放| 国产精品专区第二| 久久超碰97人人做人人爱| 亚洲男人影院| 国内精品亚洲| 久久综合色8888| 久久色在线播放| 亚洲人精品午夜| 亚洲精品乱码久久久久| 欧美另类一区| 亚洲在线观看免费| 亚洲一区二区三区涩| 国产亚洲一区二区在线观看| 久久免费国产| 欧美成人首页| 亚洲视频中文字幕| 亚洲一区二区在线视频| 国产一区二区三区四区五区美女 | 狠狠色综合网站久久久久久久| 久久精品三级| 久久天堂av综合合色| 亚洲欧洲在线观看| 99这里只有久久精品视频| 国产精品久久久久久久久久免费| 欧美一区在线直播| 久久天堂国产精品| 99re热精品| 亚洲摸下面视频| 影音先锋日韩有码| 日韩网站在线看片你懂的| 国产精品一区二区三区四区五区| 久久亚洲高清| 欧美精品一区二区三区视频| 欧美一区二区三区视频在线观看| 久久精品一本久久99精品| 亚洲精品一线二线三线无人区| 亚洲亚洲精品三区日韩精品在线视频| 国内久久视频| 亚洲免费观看高清完整版在线观看熊 | 久久久噜噜噜久久中文字免|