• <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>

            巢穴

            about:blank

            第4章

            UNIX網絡編程筆記

            做下筆記,以供不時之需:)

            4

             

             

            socket(int family,               int type,                      int protocol);

            非負描述字-成功,-1-出錯

                        協議族                   套接口類型                              協議類型常量值

                        AF_INET  IPv4協議 SOCK_STREAM 字節流           IPPROTO_TCP  TCP傳輸協議

                        AF_INET6 IPv6協議    SOCK_DGRAM  數據報              IPPROTO_UDP  UDP傳輸協議

                       AF_LOCAL UNIX域協議  SOCK_SEQPACKET有序分組          IPPROTO_SCTP SCTP傳輸協議

                        AF_ROUTE 路由套接口  SOCK_RAW    原始套接口

                        AF_KEY   密鑰套接口

             

             

             

            protocol可以設為0,以選擇所給定的familytype組合的系統缺省值

             

             

            connect(int sockfd,           const struct sockaddr *servaddr,    socklen_t addrlen);

                     要連接的套接口描述字         指向描述連接地址的套接口地址的結構指針     指向套接口地址的結構大小        

            0-成功,-1-失敗

             

             

            ETIMEDOUT錯誤,客戶端未收到SYN分節的響應

            4.4BSD內核中SYN分節會在首次發出后的6秒,24秒后再發出SYN分節,如果75秒后仍無響應,返回錯誤(TCPv2 p828)

             

            ECONNERFUSED錯誤,客戶端收到RST分節時就返回錯誤

            其中產生RST的三個條件是:

            1.目的地為某端口的SYN到達,然而該端口上沒有正在監聽的服務器

            2.TCP想取消一個已有連接

            3.TCP接受到一個根本不存在的連接上的分節(TCPv1 246-250)

             

            EHOSTUNREACHENETUNREACH錯誤

            在發出SYN分節的中間某個路由器引發了目的地不可達的ICMP錯誤,客戶主機保存該消息,但仍然繼續發送SYN,直到75秒后,如果仍未有回應,則把錯誤消息返回給進程。

            以下情況也會產生此類錯誤

            1.本地系統的轉發表,根本沒有到達遠地系統的路徑

            2.connect調用根本不等待就返回(非阻塞?)

             

            :connect失敗則該套接口不再可用,必須關閉。

             

             

            bind(int sockfd,                  const struct sockaddr *myaddr,               socklen_t addrlen);

            0-成功,-1失敗

                 要綁定的套接口描述字       指向描述要綁定的套接口地址的結構指針         指向套接口地址的結構大小

             

            如果一個TCP客戶端或服務器未曾調用bind捆綁一個端口,當調用connectlisten時,內核會為相應的套接口選擇一個臨時端口

            進程可把特定IP地址捆綁到它的套接口上,這個特定IP必須是主機的網絡接口之一。對于TCP客戶,這就限定了套接口只接受目的地為這個特定IP的客戶連接。

            TCP客戶通過不把IP捆綁到它的套接口上,內核會根據所用外出網絡接口來選擇源IP地址,而所用外出的接口則取決于到達服務器所需的路徑。(TCPv2 p737)

            如果TCP服務器沒有把IP地址捆綁到它的套接口上,內核就把客戶發送的SYN的宿IP地址作為服務器的源地址。(TCPv2 p943)

             

            EADDRINUSE錯誤 地址已使用

             

             

             

            listen(   int sockfd ,                         int backlog);

            0-成功,-1失敗

                  要轉換成被動的套接口     排隊的最大已連接個數

             

             

            1.未完成連接隊列

            處于SYN_RCVD狀態的套接口隊列

            2.已完成連接隊列

            處于ESTABLISHED狀態的套接口隊列

             

            在隊列滿時,服務器如果收到SYN分節,會忽略掉,因為隊列滿是暫時性的,忽略掉可以以期待客戶端的再次連接。而如果返回RST分節,會時客戶端放棄連接。

             

            在三次握手完成之后,但在服務器調用accept之前到達的數據,應有服務器TCP排隊,最大數據量為相應的已連接套接口的接受緩沖區大小。



            Int accept(        int sockfd,                  struct sockaddr* cliaddr,                             socklen_t* addrlen);

            非負描述字-成功,-1-失敗

                                        被動的監聽套接口  對端的套接口地址的結構         對端的套接口地址的結構大小

             

             

            Int close(int sockfd);

            0-       成功,-1-失敗

            要關閉的套接口

             

            缺省行為是修改套接口標記為已關閉,函數會立即返回,此時該套接口描述字已不能再由進程使用。而TCP將嘗試發送已排隊等待發送到對端的任何數據,發送完畢后開始正常的TCP連接終止序列。

             

            SO_LINGER套接口選項可以改變此缺省行為。

            posted on 2010-12-16 11:39 Vincent 閱讀(367) 評論(0)  編輯 收藏 引用 所屬分類: UNIX網絡編程

            精品国产综合区久久久久久 | 91精品国产91久久久久福利| 亚洲精品乱码久久久久久蜜桃图片| 久久午夜福利无码1000合集| 亚洲AV无一区二区三区久久 | 久久99精品久久久久婷婷| 狠色狠色狠狠色综合久久| 欧美激情精品久久久久久久九九九 | 久久影视综合亚洲| 久久亚洲私人国产精品vA| 国产精品免费久久久久久久久| 伊人久久成人成综合网222| 久久免费精品视频| 中文字幕乱码久久午夜| 久久99热这里只有精品国产| 久久综合88熟人妻| 国产免费久久精品99re丫y| 精品久久一区二区三区| 97久久婷婷五月综合色d啪蜜芽| 国产—久久香蕉国产线看观看| 无码专区久久综合久中文字幕| 日韩欧美亚洲综合久久影院Ds | 日本免费一区二区久久人人澡 | 亚洲va久久久噜噜噜久久男同| 伊人久久免费视频| 久久国产精品久久久| 麻豆亚洲AV永久无码精品久久 | 精品欧美一区二区三区久久久| 国产精品美女久久久久| 一本久道久久综合狠狠爱| 久久久不卡国产精品一区二区| 久久久久夜夜夜精品国产| 99久久人妻无码精品系列| 婷婷五月深深久久精品| 精品久久久中文字幕人妻| 热RE99久久精品国产66热| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产精品福利一区二区久久| 人妻精品久久久久中文字幕69| 久久婷婷色综合一区二区| 狠狠色婷婷久久综合频道日韩 |