亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

網絡IPC:套接字之套接字描述符

2024-06-28 13:27:51
字體:
來源:轉載
供稿:網友
網絡ipC:套接字之套接字描述符

套接字是通信端點的抽象。與應用程序要使用文件描述符訪問文件一樣,訪問套接字也需要套接字描述符。套接字描述符在UNIX系統是用文件描述符實現的。事實上,許多處理文件描述符的函數(如read和write)都可以處理套接字描述符。

要創建一個套接字,可以調用socket函數。

#include <sys/socket.h>int socket(int domain, int type, int PRotocol);返回值:若成功則返回文件(套接字)描述符,若出錯則返回-1

參數domain(域)確定通信的特性,包括地址格式。表16-1總結了由POSIX.1指定的各個域。各個域有自己的格式表示地址,而表示各個域的常數都以AF_開頭,意指地址族(address family)。

                                   表16-1 套接字通信域

未命名

多數系統還會定義AF_LOCAL域,這是AF_UNIX的別名。AF_UNSPEC域可以代表任何域。歷史上,有些平臺支持其他網絡協議(如AF_IPX為NetWare協議族),但這些協議的域常數沒有在POSIX.1標準中定義。

參數type確定套接字的類型,進一步確定通信特征。表16-2總結了由POSIX.1定義的套接字類型,但在實現中可以自由增加對其他類型的支持。

                                                         表16-2 套接字類型

未命名

參數protocol通常是0,表示按給定的域和套接字類型選擇默認協議。當對同一域和套接字類型支持多個協議時,可以使用protocol參數選擇一個特定協議。在AF_INET通信域中套接字類型SOCK_STREAM的默認協議是TCP(傳輸控制協議)。在AF_INET通信域中套接字類型SOCK_DGRAM的默認協議是UDP(用戶數據報協議)。下表(摘自apue第3版)列出了為因特網域套接字定義的協議:

未命名

對于數據報(SOCK_DGRAM)接口,與對方通信時是不需要邏輯連接的。只需要送出一個報文,其地址是一個對方進程所使用的套接字。

因此數據報提供了一個無連接的服務。另一方面,字節流(SOCK_STREAM)要求在交換數據之前,在本地套接字和與之通信的遠程套接字之間建立一個邏輯連接。

數據報是一種自包含報文。發送數據報近似于給某人郵寄信件。可以郵寄很多信,但不能保證投遞的次序,并且可能有些信件丟失在路上。每封信件包含接收者的地址,使這封信件獨立于所有其他信件。每封信件可能送達不同的接收者。

相比之下,使用面向連接的協議通常就像與對方打電話。首先,需要通過電話建立一個連接,連接建立好之后,彼此能雙向地通信。每個連接是端到端的通信信道。會話中不包含地址信息,就像呼叫的兩端存在一個點對點的虛擬連接,并且連接本身暗含特定的源和目的地。

對于SOCK_STREAM套接字,應用程序意識不到報文界限,因為套接字提供的是字節流服務。這意味著當從套接字讀出數據時,它也許不會返回所有由發送者進程所寫的字節數。最終可以獲得發送過來的所有數據,但也許要通過若干次函數調用得到。

SOCK_SEQPACKET套接字和SOCK_STREAM套接字很類似,但從該套接字得到的是基于報文的服務而不是字節流服務。這意味著從SOCK_SEQPACKET套接字接收的數據量與對方發送的一致。流控制傳輸協議(Stream Control Transimission Portocol, SCTP)提供了因特網域上的順序數據包服務。

SOCK_RAW套接字提供一個數據報接口用于直接訪問下面的網絡層(在因特網域中為IP)。使用這個接口時,應用程序負責構造自己的協議首部,這是因為傳輸協議(TCP和UDP等)被繞過了。當創建一個原始套接字時需要有超級用戶特權,用以防止惡意程序繞過內建安全機制來創建報文。

調用socket與調用open相類似。在兩種情況下,均可獲得用于輸入/輸出的文件描述符。當不再需要該文件描述符時,調用close來關閉對文件或套接字的訪問,并且釋放該描述符以便重新使用。

雖然套接字描述符本質上是一個文件描述符,但不是所有參數為文件描述符的函數都可以接受套接字描述符。表16-3總結了到目前為止所討論的大多數使用文件描述符的函數處理套接字描述符時的行為。未規定的和由實現定義的行為通常意味著函數不能處理套接字描述符。例如,lseek不處理套接字,因為套接字不支持文件偏移量的概念。

                                            表16-3 使用文件描述符的函數處理套接字時的行為

未命名

套接字通信是雙向的??梢圆捎煤瘮祍hutdown來禁止套接字上的輸入/輸出。

#include <sys/socket.h>int shutdown(int sockfd, int how);返回值:若成功則返回0,出錯則返回-1

如果how是SHUT_RD(關閉讀端),那么無法從套接字讀取數據;如果how是SHUT_WR(關閉寫端),那么無法使用套接字發送數據;使用SHUT_RDWR則將同時無法讀取和發送數據。

能夠使用close關閉套接字,為何還要使用shutdown呢?理由如下:首先,close只有在最后一個活動引用被關閉時才釋放網絡端點。這意味著如果復制一個套接字(例如采用dup),套接字直到關閉了最后一個引用它的文件描述符之后才會被釋放。而shutdown允許使一個套接字處于不活動狀態,無論引用它的文件描述符數目多少。其次,有時只關閉套接字雙向傳輸中的一個方向會很方便。例如,如果想讓所通信的進程能夠確定數據發送何時結束,可以關閉該套接字的寫端,然而通過該套接字讀端仍可以繼續接收數據。

本篇博文內容摘自《UNIX環境高級編程》(第2版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影免费在线观看| 欧美一乱一性一交一视频| 中文字幕在线看视频国产欧美在线看完整| 国产精品美女久久久久久免费| 成人乱人伦精品视频在线观看| 日本韩国欧美精品大片卡二| www.欧美三级电影.com| 欧美高跟鞋交xxxxhd| 国产精品爽爽ⅴa在线观看| 亚洲精品福利在线观看| 亚洲性猛交xxxxwww| 欧美情侣性视频| 色99之美女主播在线视频| 国产婷婷成人久久av免费高清| 原创国产精品91| 456国产精品| 国模精品视频一区二区| 国产精品69精品一区二区三区| 欧美视频专区一二在线观看| 91日本视频在线| xvideos亚洲| 国产精品国产福利国产秒拍| 国产亚洲人成a一在线v站| 欧美人与物videos| 韩国国内大量揄拍精品视频| 中文字幕在线观看亚洲| 欧美香蕉大胸在线视频观看| 欧美日韩国产一中文字不卡| 午夜精品美女自拍福到在线| 国产丝袜一区二区三区免费视频| 欧美精品成人在线| 亚洲已满18点击进入在线看片| 精品视频在线播放| 欧美成人在线网站| 日韩国产欧美精品在线| 国产精品爽黄69天堂a| 欧美性极品少妇精品网站| 亚洲护士老师的毛茸茸最新章节| 精品免费在线视频| 播播国产欧美激情| 日韩一区二区精品视频| 国产精品91免费在线| 日韩高清av一区二区三区| 亚洲黄页网在线观看| 色综合91久久精品中文字幕| 在线视频日韩精品| 国产精品自拍视频| 97激碰免费视频| 欧美日韩在线视频一区二区| 亚洲毛茸茸少妇高潮呻吟| 国产免费久久av| 538国产精品一区二区在线| 91av在线免费观看视频| 91色视频在线导航| 亚洲第一区在线观看| 国产精品青草久久久久福利99| 亚洲二区中文字幕| 91美女福利视频高清| 91美女片黄在线观| 国产网站欧美日韩免费精品在线观看| 91视频免费在线| 日本亚洲欧美成人| 欧美激情综合亚洲一二区| 一本大道香蕉久在线播放29| 国产精品久久久久久久久久小说| 国产69久久精品成人| 国产丝袜一区二区三区| 欧美一级在线亚洲天堂| 久久精品亚洲一区| 欧美裸体男粗大视频在线观看| 欧美黑人性生活视频| 日韩欧美在线视频观看| 性欧美激情精品| 尤物精品国产第一福利三区| 欧美激情国内偷拍| 欧美一乱一性一交一视频| 久久这里有精品| 欧美三级欧美成人高清www| 欧美精品一区三区| 亚洲国产精品99| 日韩高清有码在线| 亚洲在线免费看| 欧美日韩午夜激情| 精品女同一区二区三区在线播放| 国产亚洲欧洲黄色| 欧美尺度大的性做爰视频| 久久成人人人人精品欧| 国产日韩精品在线观看| **欧美日韩vr在线| 亚洲精品影视在线观看| 91精品国产九九九久久久亚洲| 日韩视频欧美视频| 色播久久人人爽人人爽人人片视av| 中文字幕精品av| 伊人久久五月天| 国产精品久久久久高潮| 日韩欧美视频一区二区三区| 欧美午夜激情视频| 国产一区二区在线免费视频| 欧美男插女视频| 国产欧美一区二区三区久久人妖| 日本亚洲欧美三级| 日韩网站免费观看| 中文综合在线观看| 国产在线观看精品一区二区三区| 亚洲午夜精品久久久久久性色| 98精品国产自产在线观看| 主播福利视频一区| 日韩视频免费观看| 成人中文字幕在线观看| 国产精自产拍久久久久久蜜| 国产亚洲精品美女久久久久| 国产女人18毛片水18精品| 欧美黑人性生活视频| 亚洲精选中文字幕| 精品中文视频在线| 69视频在线免费观看| 日韩成人性视频| 欧美最猛性xxxx| 欧美高清理论片| 精品国产视频在线| 国产精品成人v| 国产精品成人av在线| 国产一区二区三区三区在线观看| 97在线视频一区| 日韩av片永久免费网站| 日本一欧美一欧美一亚洲视频| 亚洲午夜久久久久久久| www.99久久热国产日韩欧美.com| 久久久国产视频91| 欧美视频裸体精品| 在线观看欧美日韩国产| 在线视频免费一区二区| 日韩电影中文字幕在线观看| 国产欧美日韩91| 日韩视频免费大全中文字幕| 国产精品视频一区二区三区四| 影音先锋欧美精品| 国产免费一区视频观看免费| 国产精品一区二区av影院萌芽| 懂色aⅴ精品一区二区三区蜜月| 国产精品老牛影院在线观看| 国色天香2019中文字幕在线观看| 中文字幕亚洲欧美日韩2019| 高清欧美一区二区三区| 日韩视频在线一区| 欧美成人在线免费| 日韩成人在线观看| 日韩精品黄色网| 国产区亚洲区欧美区| 97欧美精品一区二区三区| 亚洲а∨天堂久久精品9966| 欧美日韩国产二区| 国产精品99一区| 国产精品国产三级国产aⅴ9色| 色综合久久中文字幕综合网小说| 欧美日韩国产成人| 亚洲三级 欧美三级| 欧洲午夜精品久久久| 欧美富婆性猛交| 国产精品视频一区国模私拍| 国产成人免费91av在线| 日韩视频精品在线| 成人精品在线视频|