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

隨筆 - 96  文章 - 255  trackbacks - 0
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

E-mail:zbln426@163.com QQ:85132383 長期尋找對戰(zhàn)略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類

隨筆檔案

SDL相關(guān)網(wǎng)站

我的個人網(wǎng)頁

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 495350
  • 排名 - 39

最新評論

閱讀排行榜

評論排行榜

作者:龍飛

        前面一小節(jié),我們已經(jīng)寫出了TcpServer的構(gòu)造函數(shù)。這個函數(shù)的實際作用,就是創(chuàng)建了listen socket(監(jiān)聽嵌套字)。這一節(jié),我們來具體分析這個創(chuàng)建的過程。

socket和sockaddr的創(chuàng)建是可以相互獨(dú)立的

        在函數(shù)中,我們首先通過socket()系統(tǒng)調(diào)用創(chuàng)建了listenSock,然后通過為結(jié)構(gòu)體賦值的方法具體定義了服務(wù)器端的sockaddr。(memset()函數(shù)的作用是把某個內(nèi)存段的空間設(shè)定為某值,這里是清零。)其他的概念已經(jīng)在前一小節(jié)講完了。這里需要補(bǔ)充的是說明宏定義INADDR_ANY。這里的意思是使用本機(jī)所有可用的IP地址。當(dāng)然,如果你機(jī)器綁定了多個IP地址,你也可以指定使用哪一個。

數(shù)據(jù)流簡易模型(SOCK_STREAM)

        我們的例子以電話做的比喻,實際上,socket stream模型不完全類似電話,它至少有以下這些特點:
1、一種持續(xù)性的連接。這點跟電話是類似的,也可以想象成流動著液體的水管。一旦斷開,這種流動就會中斷。
2、數(shù)據(jù)包的發(fā)送實際上是非連續(xù)的。這個世界上有什么事物是真正的線性連續(xù)的?呵呵,扯遠(yuǎn)了,這貌似一個哲學(xué)問題。我們僅僅需要知道的是,一個數(shù)據(jù)包不可能是無限大的,所以,總是一個小數(shù)據(jù)包一個小數(shù)據(jù)包這樣的發(fā)送的。這一點,又有點像郵包的傳遞。這些數(shù)據(jù)包到達(dá)與否,到達(dá)的先后次序本身是無法保證的,即是說,是IP協(xié)議無法保證的。但是stream形式的TCP協(xié)議,在IP之上,做了一定到達(dá)和到達(dá)順序的保證。
3、傳送管道實際上是非封閉的。要不干嘛叫“網(wǎng)絡(luò)”-_-!!!。我們之所以能保證數(shù)據(jù)包的“定點”傳送,完全是依靠每個數(shù)據(jù)包都自帶了目的地址信息。
        由此可見,雖然socket和sockaddr可以分別創(chuàng)建,并無依賴關(guān)系。但是在實際使用的時候,一個socket至少會綁定一個本機(jī)的sockaddr,沒有自己的“地址信息”,就不能接受到網(wǎng)絡(luò)上的數(shù)據(jù)包(至少在TCP協(xié)議里面是這樣的)。

socket與本機(jī)sockaddr的綁定

        有時候綁定是系統(tǒng)的任務(wù),特別是當(dāng)你不需要知道自己的IP地址和所使用的端口號的時候。但是,我們現(xiàn)在是建立服務(wù)器,你必須告訴客戶端你的連接信息:IP和Port。所以,我們需要指明IP和Port,然后進(jìn)行綁定。
int bind(int socket, struct sockaddr* localAddress, unsigned int addressLength);
作為C++的程序員,也許你會覺得這個函數(shù)很不友好,它似乎更應(yīng)該寫成:
int bind_cpp_style(int socket, const sockaddr& localAddress);
我們需要通過函數(shù)原型指明兩點:
1、我們僅僅使用sockaddr結(jié)構(gòu)的數(shù)據(jù),但并不會對原有的數(shù)據(jù)進(jìn)行修改;
2、我們使用的是完整的結(jié)構(gòu)體,而不僅僅是這個結(jié)構(gòu)體的指針。(很顯然光用指針是無法說明結(jié)構(gòu)體大小的)
幸運(yùn)的是,在Linux的實現(xiàn)中,這個函數(shù)已經(jīng)被寫為:
#include <sys/socket.h>

/* Give the socket FD the local address ADDR (which is LEN bytes long).  */
extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     __THROW;
看到親切的const,我們就知道這個指針帶入是沒有“副作用”的。

監(jiān)聽:listen()

        stream流模型形式上是一種“持續(xù)性”的連接,這就是要求信息的流動是“可來可去”的。也就是說,stream流的socket除了綁定本機(jī)的sockaddr,還應(yīng)該擁有對方sockaddr的信息。在listen()中,這“對方的sockaddr”就可以不是某一個特定的sockaddr。實際上,listen socket的目的是準(zhǔn)備被動的接受來自“所有”sockaddr的請求。所以,listen()反而就不能指定某個特定的sockaddr。
int listen(int socket, int queueLimit);
其中第二個參數(shù)是等待隊列的限制,一般設(shè)置在5-20。Linux中實現(xiàn)為:
#include <sys/socket.h>

/* Prepare to accept connections on socket FD.
   N connection requests will be queued before further requests are refused.
   Returns 0 on success, -1 for errors.  
*/
extern int listen (int __fd, int __n) __THROW;
完成了這一步,回到我們的例子,就像是讓你小弟在電話機(jī)前做好了接電話的準(zhǔn)備工作。需要再次強(qiáng)調(diào)的是,這些行為僅僅是改變了socket的狀態(tài),實際上我想強(qiáng)調(diào)的是,為什么這些函數(shù)不會造成block(阻塞)的原因。(block的概念以后再解釋)

posted on 2008-07-14 13:02 lf426 閱讀(4624) 評論(2)  編輯 收藏 引用 所屬分類: SDL入門教程Linux與C++socket 編程入門教程

FeedBack:
# re: Linux socket 編程入門(一)TCP server 端:5、創(chuàng)建監(jiān)聽嵌套字 2009-06-17 01:54 kurorohisoka
你的文章太好了 把我?guī)нM(jìn)了socket大門口,謝謝!  回復(fù)  更多評論
  
# re: socket 編程入門教程(一)TCP server 端:5、創(chuàng)建監(jiān)聽嵌套字 2012-07-26 21:42 學(xué)習(xí)者
雖然對初學(xué)者的我來說,不是完全懂得,但說的這么清晰,是一個不錯的socket入門教材  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美性久久久| 欧美成人激情视频| 亚洲第一网站免费视频| 韩国av一区二区三区| 国产精品免费看片| 国产亚洲一本大道中文在线| 国产午夜精品视频| 在线观看欧美| 一区二区久久久久| 欧美一区二区三区视频免费| 久久久www免费人成黑人精品 | 麻豆精品国产91久久久久久| 蜜桃久久av一区| 欧美日韩国产经典色站一区二区三区 | 亚洲欧美日韩精品在线| 亚洲婷婷综合久久一本伊一区| 午夜精品久久久久久99热软件| 久久爱www.| 亚洲国产精品激情在线观看| 亚洲精选国产| 午夜精品一区二区三区电影天堂| 久久精品电影| 欧美人与性动交α欧美精品济南到| 国产精品久久久久一区| 曰本成人黄色| 亚洲欧美激情诱惑| 免费视频最近日韩| 亚洲开发第一视频在线播放| 亚洲欧美日韩国产另类专区| 欧美黄色免费网站| 国产视频在线一区二区| 亚洲欧洲另类国产综合| 亚洲欧美日韩爽爽影院| 欧美国产第二页| 性欧美xxxx大乳国产app| 欧美电影免费观看| 国产日韩精品一区二区| 亚洲欧美日韩另类| 猛男gaygay欧美视频| 欧美三级中文字幕在线观看| 国产麻豆91精品| 99国产精品99久久久久久粉嫩| 欧美永久精品| 日韩亚洲国产欧美| 欧美chengren| 亚洲第一福利视频| 久久国产精品电影| 国产精品网红福利| 亚洲图片欧美一区| 99国产精品国产精品久久| 欧美在线啊v一区| 国产精品一二三四区| 一区二区av在线| 亚洲二区免费| 久久久精品免费视频| 狠狠色狠狠色综合日日五| 欧美一区二区精品| 一本色道久久综合| 欧美婷婷久久| 日韩小视频在线观看专区| 久久精品国产一区二区三| 一区二区三区高清不卡| 欧美午夜精品久久久久久人妖| 99re热这里只有精品免费视频| 亚洲国产日韩一级| 欧美+亚洲+精品+三区| 亚洲精品1234| 91久久夜色精品国产九色| 欧美韩国日本一区| 亚洲性图久久| 亚洲一区高清| 国内免费精品永久在线视频| 久久亚洲私人国产精品va媚药| 久久久久久网站| 亚洲大胆美女视频| 亚洲电影欧美电影有声小说| 美女露胸一区二区三区| 99在线热播精品免费| 在线中文字幕一区| 国产精品视频99| 久久久久久久网站| 蜜臀va亚洲va欧美va天堂| 亚洲精品偷拍| 亚洲综合精品自拍| 黑人巨大精品欧美黑白配亚洲 | 久久久久久久综合狠狠综合| 欧美中文字幕视频在线观看| 亚洲国产一区二区在线| 亚洲乱码国产乱码精品精天堂| 国产精品久久久久久久久久免费| 久久久久久久网站| 欧美日韩成人在线播放| 欧美中文字幕视频在线观看| 久久午夜国产精品| 亚洲性感美女99在线| 新67194成人永久网站| 欧美在线观看一区二区三区| 亚洲精品三级| 国产真实久久| 亚洲美女网站| 国内精品美女av在线播放| 亚洲国产乱码最新视频| 国产精品人人做人人爽人人添| 欧美成人一区二区| 国产精品一区一区三区| 亚洲黄色av一区| 国产亚洲精品成人av久久ww| 91久久久国产精品| 国内外成人免费激情在线视频网站| 亚洲人成啪啪网站| 激情一区二区| 亚洲男人的天堂在线| 亚洲美女黄色片| 久久免费少妇高潮久久精品99| 亚洲欧美日韩专区| 欧美啪啪成人vr| 亚洲电影av| 韩国av一区| 亚洲手机成人高清视频| 亚洲精品视频在线观看网站| 久久裸体艺术| 久久久久国产精品午夜一区| 欧美视频手机在线| 亚洲国产成人久久综合一区| 国产亚洲一区二区精品| aaa亚洲精品一二三区| 亚洲美女av电影| 欧美mv日韩mv国产网站app| 久久精品视频99| 国产日韩精品入口| 午夜激情一区| 午夜激情久久久| 国产精品久久久久久久久久妞妞| 亚洲伦理精品| 在线亚洲欧美专区二区| 免费日韩一区二区| 欧美国产一区二区三区激情无套| 极品少妇一区二区| 欧美伊人久久| 六月婷婷久久| 亚洲电影在线免费观看| 久久裸体视频| 亚洲高清av| 日韩西西人体444www| 欧美成人日韩| 亚洲国产精品福利| av不卡在线看| 国产精品vvv| 小黄鸭精品aⅴ导航网站入口 | 欧美一区二视频| 国产区亚洲区欧美区| 午夜亚洲伦理| 久久在线观看视频| 亚洲精品国产精品乱码不99按摩 | 亚洲高清123| 一区二区欧美精品| 国产精品日韩一区| 久久精品一区蜜桃臀影院| 美女久久网站| 日韩亚洲欧美一区| 亚洲精品国产视频| 一本久久综合亚洲鲁鲁| 欧美精品v日韩精品v国产精品 | 亚洲高清网站| 亚洲一区二区三区在线观看视频| 国产精品热久久久久夜色精品三区 | 亚洲一区在线播放| 久久综合色播五月| 亚洲精品韩国| 国产精品vvv| 久久精品人人做人人爽| 亚洲国产美女久久久久| 午夜一区在线| 亚洲黄色视屏| 国产精品普通话对白| 久久这里只精品最新地址| 99视频超级精品| 免费观看成人www动漫视频| 亚洲视频欧美视频| 尤妮丝一区二区裸体视频| 欧美日韩一区成人| 久久精品国内一区二区三区| 亚洲九九九在线观看| 久久天堂精品| 亚洲欧美高清| 亚洲国产欧洲综合997久久| 国产精品资源| 欧美午夜精品久久久久久人妖| 久久伊人一区二区| 亚洲欧美视频一区| 99re8这里有精品热视频免费| 美日韩丰满少妇在线观看| 亚洲欧美日韩一区在线观看| 亚洲精品国产精品久久清纯直播| 国产日韩三区| 国产精品欧美日韩| 欧美日韩日韩| 美国成人毛片| 久久久精品国产免费观看同学| 亚洲欧美日韩综合aⅴ视频|