• <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>
            posts - 15, comments - 10, trackbacks - 0, articles - 0

            UNIX網絡編程讀書筆記

            Posted on 2013-10-31 00:32 whspecial 閱讀(2735) 評論(1)  編輯 收藏 引用 所屬分類: linux編程
               這一段在看《unix網絡編程》,回顧之前做項目用到的一些東西,在這里總結一下:

               (1)TCP套接口編程
               這里介紹各個接口函數(shù):
               1 文件描述符
               -socket(int domain, int type, int protocol); //生成文件描述符
               -bind(int sockfd, struct sockaddr *my_addr, int addrlen); //將本地的一個端口綁定到fd上,一般只需要在server端
               2 服務端
               -listen(int sockfd, int backlog); //有兩個作用:1,將主動套接口變?yōu)楸粍犹捉涌?2,設置最大連接數(shù)backlog
               -accept(int sockfd, void *addr, int *addrlen); //為建立好的連接生成一個新的fd
               3 客戶端
               -connect(int sockfd, struct sockaddr *serv_addr, int addrlen); //進行socket連接
               4 通信
               -send(int sockfd, const void *msg, int len, unsigned int flags); //發(fā)送請求
               -recv(int sockfd, void *buf, int len, unsigned int flags); //接收請求



               (2)I/O多路復用
               I/O多路復用是指內核一旦發(fā)現(xiàn)進程指定的一個或者多個IO條件準備讀取,它就通知該進程。按照《UNIX網絡編程》的說法,I/O多路復用用于以下三種情況:
               a)一個TCP服務器既要處理監(jiān)聽套接口,又要處理已連接套接口;
               b)一個服務器既要處理TCP,又要處理UDP;
               c)當客戶端處理多個描述字(比如處理交互式輸入和網絡套接口)
               目前被廣泛使用的是select和epoll:
               2.1,select
               int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *exceptset,const struct timeval *timeout)
               第一個參數(shù)指定最大的fd數(shù)目,中間三個分別是被監(jiān)控的讀、寫、異常的fd集,最后一個是超時時間。select函數(shù)會阻塞等待,直到監(jiān)控的fd集中有fd就緒,或者已經超時。
               2.2,epoll
               epoll相比于select,主要的好處在于它不像select一樣去輪詢fd集,而是由內核去觸發(fā);另外它支持更大的fd個數(shù)

               (3)網絡服務器模型
               其實網絡服務器模型還是比較復雜的,有一篇比較經典的文章叫做c10K problem,鏈接如下:http://www.kegel.com/c10k.html
               這里記錄的是很簡單的幾種多線程TCP服務器模型,順便可以比較下:
               2.1 主線程accept,為每個client創(chuàng)建一個線程
               2.2 使用線程池,全部accept,當有連接來的時候其中某個線程進行處理
               2.3 使用線程池,主線程accept,當有連接來的時候主線程將其放入隊列,由工作線程進行處理(生產者-消費者模型)
               1方案過于頻繁地進行線程創(chuàng)建銷毀,2方案在一個連接過來時會帶來驚群現(xiàn)象,3方案會比前兩個方案要好一些。

            Feedback

            # re: UNIX網絡編程讀書筆記  回復  更多評論   

            2013-10-31 10:01 by 孤獨劍客zzy
            謝謝分享!
            久久久久久午夜成人影院| 亚洲乱码日产精品a级毛片久久 | 久久精品国产免费| 久久青青草原精品影院| 国产欧美久久久精品影院| 波多野结衣久久一区二区| 99久久国产综合精品麻豆| 久久精品女人天堂AV麻| 欧美激情一区二区久久久| 麻豆成人久久精品二区三区免费 | 久久综合日本熟妇| 亚洲va久久久噜噜噜久久天堂| 国产99精品久久| 久久久久人妻一区二区三区 | 精品乱码久久久久久夜夜嗨| 一本久久免费视频| 国内精品久久久久久99蜜桃| 色综合久久天天综线观看| 成人国内精品久久久久影院VR| 久久精品无码午夜福利理论片| 久久免费观看视频| 一本久久a久久精品综合夜夜| 久久婷婷五月综合色奶水99啪| 久久伊人亚洲AV无码网站| 亚洲一本综合久久| 国产精品久久久久久久久鸭| 久久人做人爽一区二区三区| 韩国三级中文字幕hd久久精品| 国内精品久久久久| 国产精品久久久久影视不卡| 亚洲国产另类久久久精品| 国内精品久久久久影院亚洲| 久久夜色精品国产| 亚洲人AV永久一区二区三区久久 | 99久久er这里只有精品18| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 国产精品久久久久久福利漫画 | 国产精品99久久久久久宅男小说| 久久精品视屏| 亚洲欧美日韩久久精品| 久久久青草青青国产亚洲免观|