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

chaosuper85

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
socket()函數(shù) 我想我不能再不提這個(gè)了-下面我將討論一下socket()系統(tǒng)調(diào)用。 下面是詳細(xì)介紹: #include #include int socket(int domain, int type, int protocol); 但是它們的參數(shù)是什么? 首先,domain 應(yīng)該設(shè)置成 "AF_INET",就 象上面的數(shù)據(jù)結(jié)構(gòu)struct sockaddr_in 中一樣。然后,參數(shù) type 告訴內(nèi)核 是 SOCK_STREAM 類型還是 SOCK_DGRAM 類型。最后,把 protocol 設(shè)置為 "0"。(注意:有很多種 domain、type,我不可能一一列出了,請(qǐng)看 socket() 的 man幫助。當(dāng)然,還有一個(gè)"更好"的方式去得到 protocol。同 時(shí)請(qǐng)查閱 getprotobyname() 的 man 幫助。) socket() 只是返回你以后在系統(tǒng)調(diào)用種可能用到的 socket 描述符,或 者在錯(cuò)誤的時(shí)候返回-1。全局變量 errno 中將儲(chǔ)存返回的錯(cuò)誤值。(請(qǐng)參考 perror() 的 man 幫助。) -------------------------------------------------------------------------------- bind()函數(shù)   一旦你有一個(gè)套接字,你可能要將套接字和機(jī)器上的一定的端口關(guān)聯(lián) 起來。(如果你想用listen()來偵聽一定端口的數(shù)據(jù),這是必要一步--MUD 告 訴你說用命令 "telnet x.y.z 6969"。)如果你只想用 connect(),那么這個(gè)步 驟沒有必要。但是無論如何,請(qǐng)繼續(xù)讀下去。 這里是系統(tǒng)調(diào)用 bind() 的大概: #include #include int bind(int sockfd, struct sockaddr *my_addr, int addrlen); sockfd 是調(diào)用 socket 返回的文件描述符。my_addr 是指向數(shù)據(jù)結(jié)構(gòu) struct sockaddr 的指針,它保存你的地址(即端口和 IP 地址) 信息。 addrlen 設(shè)置為 sizeof(struct sockaddr)。 簡單得很不是嗎? 再看看例子: #include #include #include #define MYPORT 3490 main()    {    int sockfd;    struct sockaddr_in my_addr; sockfd = socket(AF_INET, SOCK_STREAM, 0); /*需要錯(cuò)誤檢查 */ my_addr.sin_family = AF_INET; /* host byte order */    my_addr.sin_port = htons(MYPORT); /* short, network byte order */    my_addr.sin_addr.s_addr = inet_addr("132.241.5.10");    bzero(&(my_addr.sin_zero),; /* zero the rest of the struct */ /* don't forget your error checking for bind(): */    bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));    .    .    . 這里也有要注意的幾件事情。my_addr.sin_port 是網(wǎng)絡(luò)字節(jié)順序, my_addr.sin_addr.s_addr 也是的。另外要注意到的事情是因系統(tǒng)的不同, 包含的頭文件也不盡相同,請(qǐng)查閱本地的 man 幫助文件。 在 bind() 主題中最后要說的話是,在處理自己的 IP 地址和/或端口的 時(shí)候,有些工作是可以自動(dòng)處理的。 my_addr.sin_port = 0; /* 隨機(jī)選擇一個(gè)沒有使用的端口 */   my_addr.sin_addr.s_addr = INADDR_ANY; /* 使用自己的IP地址 */ 通過將0賦給 my_addr.sin_port,你告訴 bind() 自己選擇合適的端 口。同樣,將 my_addr.sin_addr.s_addr 設(shè)置為 INADDR_ANY,你告訴 它自動(dòng)填上它所運(yùn)行的機(jī)器的 IP 地址。 如果你一向小心謹(jǐn)慎,那么你可能注意到我沒有將 INADDR_ANY 轉(zhuǎn) 換為網(wǎng)絡(luò)字節(jié)順序!這是因?yàn)槲抑纼?nèi)部的東西:INADDR_ANY 實(shí)際上就 是 0!即使你改變字節(jié)的順序,0依然是0。但是完美主義者說應(yīng)該處處一 致,INADDR_ANY或許是12呢?你的代碼就不能工作了,那么就看下面 的代碼: my_addr.sin_port = htons(0); /* 隨機(jī)選擇一個(gè)沒有使用的端口 */ my_addr.sin_addr.s_addr = htonl(INADDR_ANY);/* 使用自己的IP地址 */ 你或許不相信,上面的代碼將可以隨便移植。我只是想指出,既然你 所遇到的程序不會(huì)都運(yùn)行使用htonl的INADDR_ANY。 bind() 在錯(cuò)誤的時(shí)候依然是返回-1,并且設(shè)置全局錯(cuò)誤變量errno。 在你調(diào)用 bind() 的時(shí)候,你要小心的另一件事情是:不要采用小于 1024的端口號(hào)。所有小于1024的端口號(hào)都被系統(tǒng)保留!你可以選擇從1024 到65535的端口(如果它們沒有被別的程序使用的話)。 你要注意的另外一件小事是:有時(shí)候你根本不需要調(diào)用它。如果你使 用 connect() 來和遠(yuǎn)程機(jī)器進(jìn)行通訊,你不需要關(guān)心你的本地端口號(hào)(就象 你在使用 telnet 的時(shí)候),你只要簡單的調(diào)用 connect() 就可以了,它會(huì)檢 查套接字是否綁定端口,如果沒有,它會(huì)自己綁定一個(gè)沒有使用的本地端口。 -------------------------------------------------------------------------------- connect()程序   現(xiàn)在我們假設(shè)你是個(gè) telnet 程序。你的用戶命令你得到套接字的文件 描述符。你聽從命令調(diào)用了socket()。下一步,你的用戶告訴你通過端口 23(標(biāo)準(zhǔn) telnet 端口)連接到"132.241.5.10"。你該怎么做呢? 幸運(yùn)的是,你正在閱讀 connect()--如何連接到遠(yuǎn)程主機(jī)這一章。你可 不想讓你的用戶失望。 connect() 系統(tǒng)調(diào)用是這樣的: #include #include int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); sockfd 是系統(tǒng)調(diào)用 socket() 返回的套接字文件描述符。serv_addr 是 保存著目的地端口和 IP 地址的數(shù)據(jù)結(jié)構(gòu) struct sockaddr。addrlen 設(shè)置 為 sizeof(struct sockaddr)。 想知道得更多嗎?讓我們來看個(gè)例子: #include #include #include #define DEST_IP "132.241.5.10"   #define DEST_PORT 23 main()    { int sockfd; struct sockaddr_in dest_addr; /* 目的地址*/ sockfd = socket(AF_INET, SOCK_STREAM, 0); /* 錯(cuò)誤檢查 */ dest_addr.sin_family = AF_INET; /* host byte order */ dest_addr.sin_port = htons(DEST_PORT); /* short, network byte order */ dest_addr.sin_addr.s_addr = inet_addr(DEST_IP); bzero(&(dest_addr.sin_zero),; /* zero the rest of the struct */ /* don't forget to error check the connect()! */ connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));    .    .    .   再一次,你應(yīng)該檢查 connect() 的返回值--它在錯(cuò)誤的時(shí)候返回-1,并 設(shè)置全局錯(cuò)誤變量 errno。 同時(shí),你可能看到,我沒有調(diào)用 bind()。因?yàn)槲也辉诤醣镜氐亩丝谔?hào)。 我只關(guān)心我要去那。內(nèi)核將為我選擇一個(gè)合適的端口號(hào),而我們所連接的 地方也自動(dòng)地獲得這些信息。一切都不用擔(dān)心。
posted on 2010-01-16 21:43 chaosuper 閱讀(102) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合伊人77777麻豆| 男女精品网站| 99在线精品观看| 欧美全黄视频| 一区二区欧美国产| 日韩午夜激情电影| 国产精品日韩欧美综合| 欧美一区二区三区播放老司机| 亚洲欧美美女| 激情欧美日韩一区| 亚洲人永久免费| 国产精品美女xx| 久热综合在线亚洲精品| 欧美jizz19性欧美| 亚洲欧美综合国产精品一区| 欧美在线91| 亚洲免费观看| 亚洲欧美另类综合偷拍| 一区二区在线免费观看| 亚洲精品网站在线播放gif| 欧美日韩在线高清| 久久激情中文| 欧美国产亚洲精品久久久8v| 亚洲综合精品| 免费观看成人| 欧美在线观看网址综合| 鲁大师影院一区二区三区| 亚洲视频第一页| 欧美一区二区在线视频| 亚洲精品综合在线| 亚洲欧美久久久| 亚洲区中文字幕| 亚洲主播在线观看| 亚洲精品一品区二品区三品区| 亚洲一区二区视频在线| 91久久久国产精品| 欧美在线视频观看| 中文一区字幕| 欧美成人亚洲成人| 久久久久久久国产| 国产精品久久久久av| 玖玖精品视频| 国产日韩综合| 一本色道久久综合狠狠躁篇怎么玩 | 中日韩在线视频| 久久综合婷婷| 玖玖国产精品视频| 国产三级精品三级| 亚洲视屏在线播放| 99这里有精品| 欧美激情1区2区3区| 久热爱精品视频线路一| 国产视频亚洲精品| 亚洲专区欧美专区| 亚洲男同1069视频| 欧美三级视频在线播放| 亚洲精品国产精品国自产观看浪潮 | 欧美在线啊v一区| 欧美一级艳片视频免费观看| 欧美日本精品| 亚洲激情在线播放| 在线日本成人| 免费久久精品视频| 免费国产自线拍一欧美视频| 国模吧视频一区| 亚洲欧美国产精品专区久久| 香港久久久电影| 国产精品美女www爽爽爽| 一本色道久久综合精品竹菊| 亚洲午夜在线观看视频在线| 欧美欧美天天天天操| 91久久国产综合久久91精品网站| 在线观看一区二区视频| 久久久久久免费| 欧美大香线蕉线伊人久久国产精品| 亚洲第一视频| 蜜臀va亚洲va欧美va天堂| 欧美国产日本| 一本色道综合亚洲| 国产精品高潮呻吟久久av无限| 亚洲免费观看视频| 午夜精品理论片| 狠狠88综合久久久久综合网| 久久久99爱| 最新高清无码专区| 亚洲自拍偷拍视频| 国产一区二区毛片| 欧美成年人网| 中日韩高清电影网| 久久成年人视频| 亚洲二区在线观看| 欧美日韩另类一区| 欧美一区二粉嫩精品国产一线天| 久久亚洲图片| 中国日韩欧美久久久久久久久| 欧美日韩午夜在线| 欧美中文字幕精品| 亚洲黄色高清| 欧美一区2区三区4区公司二百| 精品动漫3d一区二区三区| 欧美激情一区二区三区在线视频| 99精品视频免费在线观看| 久久精品一区二区三区四区| 亚洲黄色片网站| 国产精品日韩久久久| 久久综合99re88久久爱| 99精品久久久| 欧美+日本+国产+在线a∨观看| 在线视频一区二区| 激情视频一区二区| 国产精品v亚洲精品v日韩精品 | 欧美国产日韩亚洲一区| 亚洲综合久久久久| 91久久精品www人人做人人爽| 欧美性天天影院| 久久在线免费| 香蕉久久夜色精品国产使用方法| 亚洲欧洲日韩综合二区| 久久se精品一区精品二区| 99热精品在线| 日韩午夜黄色| 亚洲精选成人| 亚洲精品在线三区| 韩国免费一区| 欧美天堂亚洲电影院在线观看 | 久久久水蜜桃av免费网站| 亚洲开发第一视频在线播放| 久久天天狠狠| 欧美在线在线| 午夜精品美女自拍福到在线| 一区二区三区蜜桃网| 亚洲国产精品ⅴa在线观看| 国产一区二区看久久| 国产精品乱码一区二三区小蝌蚪| 欧美精品xxxxbbbb| 免费观看在线综合色| 久久婷婷蜜乳一本欲蜜臀| 欧美伊人精品成人久久综合97| 亚洲一区二区在线看| 亚洲无限av看| 中文欧美日韩| 亚洲免费视频在线观看| 亚洲在线视频观看| 亚洲免费在线观看视频| 亚洲网在线观看| 亚洲在线视频网站| 欧美亚洲一区| 久久久久青草大香线综合精品| 久久se精品一区精品二区| 性欧美1819sex性高清| 欧美一区在线视频| 久久国产精品亚洲va麻豆| 久久av老司机精品网站导航| 久久精品国产在热久久| 久久久久国内| 欧美激情一区二区在线| 欧美区一区二区三区| 欧美亚韩一区| 国产日韩一区二区三区| 狠狠狠色丁香婷婷综合激情| 影音国产精品| 日韩一区二区福利| 亚洲欧美综合国产精品一区| 久久精品首页| 亚洲国产欧美久久| 一区二区三区精密机械公司 | 日韩一级免费观看| 正在播放亚洲一区| 欧美一区深夜视频| 免费成人在线观看视频| 欧美日本一区二区高清播放视频| 欧美日韩综合网| 国产午夜精品麻豆| 亚洲欧洲一区| 午夜精品久久久久久久久久久久| 久久精选视频| 亚洲欧洲另类国产综合| 亚洲综合视频在线| 女主播福利一区| 国产九区一区在线| 亚洲精品韩国| 久久久久久久久久久成人| 亚洲欧洲一区二区天堂久久| 亚洲中字在线| 欧美久久成人| 在线看国产日韩| 欧美在线啊v| 亚洲人成在线播放| 欧美一区亚洲二区| 欧美四级在线| 91久久线看在观草草青青| 欧美一区二区三区在线观看| 亚洲成色www8888| 欧美一区二区三区精品| 欧美色一级片| 亚洲最新在线视频| 美女免费视频一区| 午夜天堂精品久久久久| 国产精品chinese| 亚洲免费成人av|