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

chaosuper85

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

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            亚洲一区二区三区中文字幕| 一区二区三区日韩在线观看| 久久久久久自在自线| 亚洲一区在线观看视频| 国产嫩草影院久久久久 | 欧美成年人网| 夜夜嗨网站十八久久| 亚洲免费电影在线| 国产精品国产一区二区| 久久精品二区亚洲w码| 久久国产婷婷国产香蕉| 在线免费观看视频一区| 亚洲电影在线播放| 欧美理论大片| 欧美在线网址| 久久亚洲一区二区| 一区二区三区四区国产| 亚洲欧美日韩另类| 在线日韩av片| 99精品国产在热久久| 国产色视频一区| 亚洲国产欧美一区二区三区丁香婷| 欧美乱大交xxxxx| 欧美在线观看视频一区二区| 麻豆国产精品777777在线| 一区二区三区成人精品| 欧美一区二区三区在线| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产日韩欧美| 亚洲最新在线| 在线视频观看日韩| 亚洲午夜精品17c| 精品成人一区二区三区| 99热免费精品| 亚洲丰满在线| 欧美一区二区视频观看视频| 99天天综合性| 久久视频在线视频| 欧美一级日韩一级| 欧美经典一区二区| 久久综合激情| 国产午夜精品美女视频明星a级| 亚洲成色精品| 1024成人网色www| 亚洲欧美综合另类中字| 亚洲午夜91| 欧美xxxx在线观看| 久久中文字幕导航| 国产免费成人| 亚洲一级黄色| 亚洲一区三区电影在线观看| 欧美成人精品h版在线观看| 久久久久久久欧美精品| 国产精品美女www爽爽爽| 亚洲精品综合精品自拍| 99ri日韩精品视频| 久久综合免费视频影院| 老色批av在线精品| 国产一区二区三区日韩欧美| 亚洲欧美日本精品| 性久久久久久久久久久久| 欧美午夜精品久久久久免费视 | 国产精品99久久久久久有的能看| 在线观看精品视频| 久久久精品动漫| 久久一二三区| 狠狠干成人综合网| 久久精品欧美日韩| 玖玖国产精品视频| 亚洲成人原创| 欧美14一18处毛片| 最新中文字幕一区二区三区| 日韩视频在线免费观看| 欧美精品自拍| 久久天天综合| 榴莲视频成人在线观看| 国产精品一区视频| 亚洲在线一区二区三区| 亚洲欧美国产不卡| 国产精品亚洲成人| 欧美一区=区| 久久综合色播五月| 亚洲欧洲日本专区| 欧美日韩123| 亚洲综合日韩在线| 久久综合色播五月| 亚洲欧洲一区二区三区久久| 欧美精品国产精品| 亚洲一区二区三区成人在线视频精品| 欧美一区二区三区日韩| 国产欧美综合一区二区三区| 久久精品免费看| 91久久国产综合久久蜜月精品| 亚洲视频一区在线| 亚洲电影成人| 欧美激情欧美激情在线五月| 最近看过的日韩成人| 一区二区三区四区五区在线| 国产精品久久久久久久久 | 亚洲麻豆国产自偷在线| 欧美日韩伦理在线免费| 午夜精品久久久久久久男人的天堂| 久久精品国产77777蜜臀| 亚洲区国产区| 国产精品视频久久一区| 久久日韩精品| 亚洲综合色在线| 亚洲国产视频a| 欧美在线1区| 一区二区久久久久| 伊人春色精品| 国产精品尤物福利片在线观看| 久久深夜福利| 一本久久a久久免费精品不卡| 99re6这里只有精品| 国产日韩欧美一区在线| 欧美成年人视频| 久久精品盗摄| 亚洲天堂av图片| 亚洲激情视频在线观看| 久久久久久网| 午夜日韩福利| 亚洲视频免费观看| 亚洲国产一区在线| 国产一区二区三区日韩欧美| 欧美日韩国产丝袜另类| 久久亚洲精品伦理| 欧美中文字幕视频在线观看| 99综合视频| 亚洲狼人综合| 亚洲国产美女久久久久| 欧美大片在线观看一区| 久久资源在线| 久久综合99re88久久爱| 久久精品午夜| 久久久久九九九九| 欧美影院在线播放| 午夜在线视频一区二区区别| 亚洲一区二区三| 亚洲午夜久久久久久久久电影网| 亚洲激情综合| 亚洲精品一区二区三区av| 最新日韩在线| 日韩视频欧美视频| 99综合在线| 亚洲午夜激情网页| 亚洲专区在线| 亚洲欧美日韩一区二区三区在线| 国产精品99久久久久久白浆小说| 宅男精品视频| 亚洲在线视频网站| 欧美在线一级va免费观看| 久久精品一区二区三区中文字幕 | 国产视频欧美视频| 国产精品日韩在线播放| 国产精品爽黄69| 国产亚洲欧美另类中文| 国产一区二区三区奇米久涩| 狠狠色狠狠色综合| 亚洲国产小视频在线观看| 99热免费精品| 香蕉国产精品偷在线观看不卡| 欧美一区二区三区免费看 | 亚洲一级影院| 欧美一区二区三区免费观看| 久久人人爽爽爽人久久久| 免费在线国产精品| 亚洲精品国产精品乱码不99按摩| 亚洲精品乱码久久久久久按摩观| 一区二区三区黄色| 久久精品视频在线观看| 欧美顶级少妇做爰| 国产精品另类一区| 一区久久精品| 制服丝袜激情欧洲亚洲| 欧美在线观看一区二区三区| 久热精品视频在线观看| 亚洲免费观看视频| 欧美亚洲综合另类| 欧美国产第一页| 国产日本欧美视频| 日韩午夜精品| 久久国产直播| 亚洲精品中文字| 久久精品一本久久99精品| 欧美久久久久免费| 国产在线视频欧美一区二区三区| 亚洲精品一区二区三| 久久精品水蜜桃av综合天堂| 亚洲国产日韩一区二区| 羞羞答答国产精品www一本| 欧美成人精品三级在线观看| 国产精品夜夜嗨| 亚洲人成毛片在线播放| 久久久久久久波多野高潮日日| 亚洲三级观看| 久久中文字幕导航| 国产喷白浆一区二区三区| 亚洲视频一二区| 欧美国产日韩一区二区三区|