• <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>

            大家看一下這個(gè)問題

            今天在看一本書附的源代碼的時(shí)候,發(fā)現(xiàn)了一個(gè)問題,大家來探討一下:關(guān)于Winsock的
            下面是兩個(gè)程序,一個(gè)是服務(wù)器端的程序,不斷在監(jiān)客戶端的連接
            另外一個(gè)是客戶端的程序,試圖連接服務(wù)器端
            服務(wù)器端的程序代碼:
            int main()
            {
            ?// 創(chuàng)建套節(jié)字
            ?SOCKET sListen = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
            ?if(sListen == INVALID_SOCKET)
            ?{
            ??printf("Failed socket() \n");
            ??return 0;
            ?}
            ?
            ?// 填充sockaddr_in結(jié)構(gòu)
            ?sockaddr_in sin;
            ?sin.sin_family = AF_INET;
            ?sin.sin_port = htons(4567);
            ?sin.sin_addr.S_un.S_addr = INADDR_ANY;
            ?
            ?// 綁定這個(gè)套節(jié)字到一個(gè)本地地址
            ?if(::bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
            ?{
            ??printf("Failed bind() \n");
            ??return 0;
            ?}
            ?
            ?// 進(jìn)入監(jiān)聽模式
            ?if(::listen(sListen, 2) == SOCKET_ERROR)
            ?{
            ??printf("Failed listen() \n");
            ??return 0;
            ?}
            ?
            ?// 循環(huán)接受客戶的連接請(qǐng)求
            ?sockaddr_in remoteAddr;
            ?int nAddrLen = sizeof(remoteAddr);
            ?SOCKET sClient;
            ?char szText[] = " TCP Server Demo! \r\n";
            ?while(TRUE)
            ?{
            ??// 接受一個(gè)新連接
            ??sClient = ::accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
            ??if(sClient == INVALID_SOCKET)
            ??{
            ???printf("Failed accept()");
            ???continue;
            ??}
            ??
            ??printf(" 接受到一個(gè)連接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));

            ??// 向客戶端發(fā)送數(shù)據(jù)
            ??::send(sClient, szText, strlen(szText), 0);
            ??// 關(guān)閉同客戶端的連接
            ??::closesocket(sClient);
            ?}
            ??
            ?// 關(guān)閉監(jiān)聽套節(jié)字
            ?::closesocket(sListen);
            ?::MessageBox(NULL,"","",MB_OK);
            ?return 0;
            }
            大家請(qǐng)注意上面的while循環(huán),在不斷監(jiān)聽客戶端的連接。除非你手動(dòng)關(guān)閉該服務(wù)器程序,否則while循環(huán)是不會(huì)退出的。那么,問題是:關(guān)閉套接字的那段代碼始終不會(huì)執(zhí)行(我用MessageBox做了試驗(yàn),即使是手動(dòng)關(guān)閉該程序,也不會(huì)MessageBox),這樣,是不是會(huì)發(fā)生資源泄露呢?難道windows會(huì)幫你關(guān)閉?

            posted on 2006-06-10 20:17 bo 閱讀(871) 評(píng)論(3)  編輯 收藏 引用 所屬分類: Network

            評(píng)論

            # re: 大家看一下這個(gè)問題 2006-06-10 21:42 LOGOS

            程序關(guān)閉后,他所占用的內(nèi)存空間會(huì)被系統(tǒng)回收。
            不過我不能確定sListen是否會(huì)被關(guān)閉  回復(fù)  更多評(píng)論   

            # re: 大家看一下這個(gè)問題 2006-06-11 09:37 從頭再來

            為什么不開一個(gè)線程去循環(huán)接受客戶的連接請(qǐng)求?目前的情況下,就是關(guān)閉了同客戶端的連接,也不會(huì)退出while循環(huán)的,不退出循環(huán)怎么會(huì)繼續(xù)下面的messagebox()?

              回復(fù)  更多評(píng)論   

            # re: 大家看一下這個(gè)問題 2006-06-11 12:20 cooelaf

            用異步socket AcceptEx來接受連接.  回復(fù)  更多評(píng)論   

            <2006年4月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(4)

            隨筆分類(23)

            隨筆檔案(23)

            URL

            最新隨筆

            搜索

            積分與排名

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            色综合合久久天天给综看| 久久国产亚洲精品麻豆| 久久狠狠色狠狠色综合| 一级做a爰片久久毛片看看| 久久久艹| 日本精品久久久久影院日本| 国产99久久久久久免费看 | 精品久久人人爽天天玩人人妻| 99热成人精品热久久669| 性做久久久久久久| 久久精品国产99久久久| 99久久人妻无码精品系列| 99麻豆久久久国产精品免费| 久久精品国产免费一区| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 久久久久久久亚洲Av无码| 久久久久久久尹人综合网亚洲| 久久精品9988| 国产精品久久久久久久久久免费| 久久久91人妻无码精品蜜桃HD| 2021最新久久久视精品爱 | 久久精品国产只有精品66| 久久青青草原精品国产软件| 久久亚洲精品无码VA大香大香| 久久精品黄AA片一区二区三区| 国产 亚洲 欧美 另类 久久| 一97日本道伊人久久综合影院| 无码日韩人妻精品久久蜜桃| 99久久婷婷国产一区二区| 99久久无色码中文字幕人妻| 亚洲国产精品热久久| yy6080久久| 国产精品免费看久久久香蕉| 久久久久久免费视频| 99久久国产综合精品成人影院| 亚洲伊人久久成综合人影院| .精品久久久麻豆国产精品| 欧美一级久久久久久久大| 国产精品久久久亚洲| 婷婷久久综合九色综合绿巨人| 国内精品久久久久影院日本|