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

chaosuper85

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
listen()函數(shù)   是換換內容得時候了。假如你不希望與遠程的一個地址相連,或者說, 僅僅是將它踢開,那你就需要等待接入請求并且用各種方法處理它們。處 理過程分兩步:首先,你聽--listen(),然后,你接受--accept() (請看下面的 內容)。 除了要一點解釋外,系統(tǒng)調用 listen 也相當簡單。 int listen(int sockfd, int backlog); sockfd 是調用 socket() 返回的套接字文件描述符。backlog 是在進入 隊列中允許的連接數(shù)目。什么意思呢? 進入的連接是在隊列中一直等待直 到你接受 (accept() 請看下面的文章)連接。它們的數(shù)目限制于隊列的允許。 大多數(shù)系統(tǒng)的允許數(shù)目是20,你也可以設置為5到10。 和別的函數(shù)一樣,在發(fā)生錯誤的時候返回-1,并設置全局錯誤變量 errno。 你可能想象到了,在你調用 listen() 前你或者要調用 bind() 或者讓內 核隨便選擇一個端口。如果你想偵聽進入的連接,那么系統(tǒng)調用的順序可 能是這樣的: socket();   bind(); listen();   /* accept() 應該在這 */ 因為它相當?shù)拿髁耍覍⒃谶@里不給出例子了。(在 accept() 那一章的 代碼將更加完全。)真正麻煩的部分在 accept()。 -------------------------------------------------------------------------------- accept()函數(shù)   準備好了,系統(tǒng)調用 accept() 會有點古怪的地方的!你可以想象發(fā)生 這樣的事情:有人從很遠的地方通過一個你在偵聽 (listen()) 的端口連接 (connect()) 到你的機器。它的連接將加入到等待接受 (accept()) 的隊列 中。你調用 accept() 告訴它你有空閑的連接。它將返回一個新的套接字文 件描述符!這樣你就有兩個套接字了,原來的一個還在偵聽你的那個端口, 新的在準備發(fā)送 (send()) 和接收 ( recv()) 數(shù)據(jù)。這就是這個過程! 函數(shù)是這樣定義的: #include int accept(int sockfd, void *addr, int *addrlen); sockfd 相當簡單,是和 listen() 中一樣的套接字描述符。addr 是個指 向局部的數(shù)據(jù)結構 sockaddr_in 的指針。這是要求接入的信息所要去的地 方(你可以測定那個地址在那個端口呼叫你)。在它的地址傳遞給 accept 之 前,addrlen 是個局部的整形變量,設置為 sizeof(struct sockaddr_in)。 accept 將不會將多余的字節(jié)給 addr。如果你放入的少些,那么它會通過改 變 addrlen 的值反映出來。 同樣,在錯誤時返回-1,并設置全局錯誤變量 errno。 現(xiàn)在是你應該熟悉的代碼片段。 #include #include #include #define MYPORT 3490 /*用戶接入端口*/ #define BACKLOG 10 /* 多少等待連接控制*/ main()    {   int sockfd, new_fd; /* listen on sock_fd, new connection on new_fd */   struct sockaddr_in my_addr; /* 地址信息 */   struct sockaddr_in their_addr; /* connector's address information */   int sin_size; 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 = INADDR_ANY; /* auto-fill with my IP */   bzero(&(my_addr.sin_zero),; /* zero the rest of the struct */ /* don't forget your error checking for these calls: */   bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); listen(sockfd, BACKLOG); sin_size = sizeof(struct sockaddr_in);   new_fd = accept(sockfd, &their_addr, &sin_size);    .    .    . 注意,在系統(tǒng)調用 send() 和 recv() 中你應該使用新的套接字描述符 new_fd。如果你只想讓一個連接進來,那么你可以使用 close() 去關閉原 來的文件描述符 sockfd 來避免同一個端口更多的連接。 -------------------------------------------------------------------------------- send() and recv()函數(shù)   這兩個函數(shù)用于流式套接字或者數(shù)據(jù)報套接字的通訊。如果你喜歡使 用無連接的數(shù)據(jù)報套接字,你應該看一看下面關于sendto() 和 recvfrom() 的章節(jié)。 send() 是這樣的: int send(int sockfd, const void *msg, int len, int flags); sockfd 是你想發(fā)送數(shù)據(jù)的套接字描述符(或者是調用 socket() 或者是 accept() 返回的。)msg 是指向你想發(fā)送的數(shù)據(jù)的指針。len 是數(shù)據(jù)的長度。 把 flags 設置為 0 就可以了。(詳細的資料請看 send() 的 man page)。 這里是一些可能的例子: char *msg = "Beej was here!";   int len, bytes_sent;   .   .   len = strlen(msg);   bytes_sent = send(sockfd, msg, len, 0);   .   .   . send() 返回實際發(fā)送的數(shù)據(jù)的字節(jié)數(shù)--它可能小于你要求發(fā)送的數(shù) 目! 注意,有時候你告訴它要發(fā)送一堆數(shù)據(jù)可是它不能處理成功。它只是 發(fā)送它可能發(fā)送的數(shù)據(jù),然后希望你能夠發(fā)送其它的數(shù)據(jù)。記住,如果 send() 返回的數(shù)據(jù)和 len 不匹配,你就應該發(fā)送其它的數(shù)據(jù)。但是這里也 有個好消息:如果你要發(fā)送的包很小(小于大約 1K),它可能處理讓數(shù)據(jù)一 次發(fā)送完。最后要說得就是,它在錯誤的時候返回-1,并設置 errno。 recv() 函數(shù)很相似: int recv(int sockfd, void *buf, int len, unsigned int flags); sockfd 是要讀的套接字描述符。buf 是要讀的信息的緩沖。len 是緩 沖的最大長度。flags 可以設置為0。(請參考recv() 的 man page。) recv() 返回實際讀入緩沖的數(shù)據(jù)的字節(jié)數(shù)。或者在錯誤的時候返回-1, 同時設置 errno。 很簡單,不是嗎? 你現(xiàn)在可以在流式套接字上發(fā)送數(shù)據(jù)和接收數(shù)據(jù)了。 你現(xiàn)在是 Unix 網(wǎng)絡程序員了!
posted on 2010-01-16 21:45 chaosuper 閱讀(122) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   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>
            久久偷窥视频| 亚洲电影激情视频网站| 国产精品美女999| 欧美日韩精品一区二区三区四区| 久久亚洲精品一区二区| 久久久www| 免费在线亚洲| 欧美日韩国产高清| 国产精品高潮视频| 国产九区一区在线| 精品二区视频| 亚洲最新色图| 久久9热精品视频| 嫩模写真一区二区三区三州| 亚洲福利视频在线| 亚洲一本大道在线| 久久久久久夜精品精品免费| 欧美国产一区二区| 国产精品一卡| 亚洲国产成人不卡| 亚洲欧美区自拍先锋| 可以看av的网站久久看| 亚洲韩国青草视频| 午夜一区二区三区在线观看| 男人的天堂亚洲在线| 国产精品久久久对白| 欧美国产日韩xxxxx| 欧美午夜在线视频| 伊人久久av导航| 亚洲一区二区三区精品在线 | 欧美偷拍另类| 狠狠色综合网| 亚洲男人的天堂在线aⅴ视频| 久久久久久久久久久久久久一区 | 久久成人免费视频| 欧美成人四级电影| 国产亚洲一区二区三区在线观看| 亚洲美女一区| 久久躁日日躁aaaaxxxx| 在线一区二区日韩| 欧美黑人多人双交| 在线观看91精品国产入口| 亚洲影音一区| 亚洲乱码国产乱码精品精可以看| 久久久久久久久久看片| 国产精品嫩草影院一区二区| 亚洲日韩欧美一区二区在线| 久久成人综合网| 亚洲色无码播放| 欧美另类综合| 亚洲欧洲一区二区在线观看| 久久久视频精品| 欧美一区二区三区久久精品茉莉花 | 国产一区二区日韩精品欧美精品| 一二三区精品福利视频| 美女精品视频一区| 欧美一区二区在线| 国产欧美一区二区精品仙草咪 | 久久久久久色| 亚洲欧美综合| 国产模特精品视频久久久久 | 欧美影视一区| 国产日韩精品一区二区三区| 亚洲天堂网站在线观看视频| 亚洲国产精品一区二区第一页| 久久青草久久| 亚洲人成人99网站| 亚洲黄色有码视频| 欧美激情一二三区| 亚洲最新视频在线播放| 99re6热在线精品视频播放速度 | 亚洲国产视频一区| 亚洲承认在线| 欧美绝品在线观看成人午夜影视| 亚洲影视九九影院在线观看| 91久久精品日日躁夜夜躁国产| 久久爱www| 极品少妇一区二区三区| 免费日韩av| 欧美日韩不卡合集视频| 亚洲一区二区高清视频| 西瓜成人精品人成网站| 激情五月婷婷综合| 亚洲黄色在线看| 国产精品视频成人| 麻豆精品视频在线| 欧美日韩精品在线| 久久久精品一区| 欧美激情精品久久久久久蜜臀 | 欧美va亚洲va国产综合| 欧美阿v一级看视频| 一区二区三区国产精品| 性欧美大战久久久久久久免费观看 | 久久影视三级福利片| 欧美成人一区二区三区| 亚洲午夜电影| 久久夜精品va视频免费观看| 日韩一区二区电影网| 亚洲欧美激情在线视频| 1024精品一区二区三区| 99成人在线| 精品99视频| 一区二区免费在线视频| 黄色欧美日韩| 一本久久青青| 亚洲七七久久综合桃花剧情介绍| 亚洲视频你懂的| 亚洲国产精品va在线看黑人动漫 | 美女网站在线免费欧美精品| 亚洲性人人天天夜夜摸| 久久精品首页| 亚洲一区二区三区精品在线观看| 久久久久久国产精品mv| 亚洲男女自偷自拍| 欧美成人乱码一区二区三区| 欧美伊人精品成人久久综合97| 欧美99久久| 鲁大师影院一区二区三区| 国产精品jizz在线观看美国| 欧美电影在线观看完整版| 国产欧美一区二区三区视频 | 麻豆国产精品777777在线| 亚洲免费视频一区二区| 欧美成年人视频网站欧美| 久久久久国内| 国产喷白浆一区二区三区| 在线视频一区观看| 亚洲理论在线| 免费在线一区二区| 欧美电影在线| 最新国产拍偷乱拍精品| 久久久久久久一区二区三区| 久久成人亚洲| 亚洲欧美日韩第一区 | 久久er精品视频| 亚洲一区日韩在线| 欧美精品少妇一区二区三区| 欧美黄色精品| 亚洲黄一区二区三区| 久久精视频免费在线久久完整在线看| 先锋影音一区二区三区| 国产精品久久久久久亚洲毛片| 日韩性生活视频| 亚洲少妇诱惑| 欧美性感一类影片在线播放| 亚洲美女少妇无套啪啪呻吟| 亚洲乱码精品一二三四区日韩在线 | 亚洲第一中文字幕| 亚洲国产精品一区二区www在线| 久久精品一区四区| 欧美 日韩 国产精品免费观看| 激情小说另类小说亚洲欧美| 久久久国产午夜精品| 嫩草伊人久久精品少妇av杨幂| 在线成人www免费观看视频| 久久男人资源视频| 亚洲国产老妈| 亚洲永久视频| 国产亚洲欧美色| 久久综合999| 亚洲精品国产精品国自产观看浪潮 | 亚洲麻豆视频| 欧美在线播放视频| 伊人婷婷久久| 欧美美女喷水视频| 亚洲伊人观看| 欧美激情精品| 亚洲欧美一区二区原创| 国产主播精品| 欧美日本高清视频| 亚洲欧美一区二区在线观看| 麻豆精品国产91久久久久久| 亚洲精选大片| 国产女同一区二区| 蜜桃av久久久亚洲精品| 99在线|亚洲一区二区| 羞羞答答国产精品www一本| 激情成人综合| 国产精品扒开腿做爽爽爽视频| 久久成年人视频| 日韩视频一区二区| 久久久亚洲精品一区二区三区| 亚洲国产另类久久精品| 欧美天堂亚洲电影院在线观看| 亚洲在线网站| 亚洲免费观看在线观看| 久久精品91久久香蕉加勒比| 亚洲国内精品| 国产亚洲成精品久久| 欧美激情视频网站| 久久av资源网站| 亚洲在线视频免费观看| 亚洲国产精品va在看黑人| 欧美专区亚洲专区| 亚洲无玛一区| 日韩一级片网址| 亚洲一区在线直播| 免费黄网站欧美| 亚洲一区二区av电影| 亚洲国产高清视频|