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

huyutian

他強由他強,清風拂山崗;他橫由他橫,明月照大江。他自狠來他自惡,我自一口真氣足

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  20 隨筆 :: 47 文章 :: 22 評論 :: 0 Trackbacks
對于socket編程一直有一種誤解:socket的阻塞連接下應該調用send/recv來發送和接收數據,而無阻塞連接下應該用WSASend/WSARecv函數來發送和接收數據。其實socket工作模式與調用哪個收發函數沒有任何關系,自己寫段簡單的代碼測試下就知道了。無阻塞模式下,send/recv都是立即返回的。并不會等待發送或接收完成才返回。測試還發現選擇模式下無阻塞連接,調用connect函數會立即返回,隨后調用select,在連接建立時會設置fdWrite。
SOCKET s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
{
    
return -1;
}


// Set the connection to non-blocking mode
unsigned long ulMode = 1;
if (::ioctlsocket(s, FIONBIO, &ulMode) != 0)
{
    s 
= INVALID_SOCKET;
    
return -1;
}


char szHost[128= "www.myhost.com";
int nPort = 8000;
char szBuffer[1024= "test socket function.\n"

addrinfo aiHints;
addrinfo 
*aiList = NULL;
memset(
&aiHints, 0sizeof(aiHints));
aiHints.ai_family 
= AF_INET;
aiHints.ai_socktype    
= SOCK_STREAM;
aiHints.ai_protocol    
= IPPROTO_TCP;
if (0 != ::getaddrinfo(szHost, NULL, &aiHints, &aiList))
{
    
//m_nLastError = WSAGetLastError();
    ::WSASetLastError(WSAEINVAL);
    
return -1;
}


fd_set fdRead, fdWrite;
FD_ZERO(
&fdRead);
FD_ZERO(
&fdWrite);
FD_SET(s, 
&fdRead);
FD_SET(s, 
&fdWrite);
struct timeval tv;
tv.tv_sec 
= 3;
tv.tv_usec 
= 0;

SOCKADDR_IN hostAddr;
hostAddr 
= *((SOCKADDR_IN*)aiList->ai_addr);
hostAddr.sin_port 
= ::htons(nPort);
int retCode = ::connect(s, (SOCKADDR*&hostAddr, sizeof(hostAddr));
if (retCode == SOCKET_ERROR)
{
    
int errCode = WSAGetLastError();
    
if (errCode != WSAEWOULDBLOCK)
    
{
        ::closesocket(s);
        s 
= INVALID_SOCKET;
        
return -1;
    }

}

retCode 
= ::select(0&fdRead, &fdWrite, NULL, &tv);
if (retCode > 0)
{
    
if (FD_ISSET(s, &fdRead))
    
{
        printf(
"error!\n");
    }

    
if (FD_ISSET(s, &fdWrite))
    
{
        
//connection has succeeded.
        printf("connect success!\n");
        FD_SET(s, 
&fdWrite);
        FD_ZERO(
&fdRead);
        retCode 
= ::select(0&fdRead, &fdWrite, NULL, &tv);
        
if (retCode > 0)
        
{
            
if (FD_ISSET(s, &fdRead))
            
{
                printf(
"error!\n");
            }

            
if (FD_ISSET(s, &fdWrite))
            
{
                retCode 
= send(s, szBuffer, strlen(szBuffer), 0);
                
if (retCode > 0)
                
{
                    retCode 
= recv(s, buf, 10230);
                    
if (retCode == SOCKET_ERROR)
                    
{
                        retCode 
= WSAGetLastError();
                    }

                    
else if (retCode > 0)
                    
{
                        printf(
"recv %d bytes.\n", retCode);
                    }

                }

            }

        }

    }

}

return 0;
很多問題要想深入理解最好的方法就是寫一段短的測試程序驗證一下,既不要想當然也不要道聽途說。
posted on 2011-06-19 22:47 胡雨田 閱讀(518) 評論(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>
            伊人精品久久久久7777| 亚洲欧洲一区二区在线观看 | 欧美综合国产精品久久丁香| 国产精品一区二区三区免费观看| 西西人体一区二区| 亚洲免费一在线| 国产一区二区三区久久精品| 免费在线成人av| 欧美风情在线观看| 亚洲一区二区三区四区视频| 午夜久久久久| 欲色影视综合吧| 亚洲精品免费在线观看| 欧美日韩一区二| 久久久www免费人成黑人精品| 久久久久久综合网天天| 一本到高清视频免费精品| 中文在线资源观看网站视频免费不卡 | 久久精品国产第一区二区三区最新章节| 国产午夜亚洲精品羞羞网站| 久久影视三级福利片| 欧美大片一区二区| 午夜精品福利一区二区三区av | 欧美激情一区二区三区全黄| 欧美三级在线视频| 久久手机免费观看| 欧美日产国产成人免费图片| 欧美一级欧美一级在线播放| 欧美成人dvd在线视频| 亚洲欧美日韩精品久久久久| 久久精品女人天堂| 亚洲永久免费观看| 美女爽到呻吟久久久久| 亚洲欧美中文在线视频| 欧美成人a∨高清免费观看| 久久国产天堂福利天堂| 欧美激情在线| 免费观看久久久4p| 国产欧美日韩综合| 一本到高清视频免费精品| 在线观看日韩av| 亚洲制服少妇| 亚洲影院免费| 欧美日韩国产精品一区| 麻豆精品视频在线观看| 国产精品视频一二| 亚洲靠逼com| 亚洲精品一区二区网址| 久久精品在这里| 欧美在线免费观看| 国产精品日韩在线一区| 亚洲国产激情| 亚洲精品美女在线观看播放| 久久国产精品一区二区| 欧美一区视频| 国产精品乱码一区二三区小蝌蚪| 91久久午夜| 亚洲精品在线看| 欧美成人黄色小视频| 美女黄毛**国产精品啪啪| 国产一区视频在线看| 午夜亚洲性色福利视频| 欧美一级电影久久| 国产精品制服诱惑| 亚洲一区二区视频| 欧美在线黄色| 国产一区二区三区久久久| 亚洲欧美在线另类| 久久久精品999| 狠色狠色综合久久| 久久亚洲视频| 亚洲国产人成综合网站| 夜夜嗨一区二区| 欧美日韩在线免费观看| 一区二区三区四区蜜桃| 亚洲欧美日韩在线高清直播| 国产精品日韩一区二区三区| 亚洲欧美第一页| 久久免费黄色| 亚洲欧洲偷拍精品| 欧美日韩精品一区| 亚洲欧美另类久久久精品2019| 久久精彩视频| 亚洲欧洲日韩在线| 欧美日韩在线观看一区二区三区 | 亚洲欧洲日本mm| 中国成人黄色视屏| 国产欧美欧洲在线观看| 久久精品视频网| 亚洲精品乱码| 欧美在线视频网站| 亚洲黑丝在线| 国产精品久久久久久户外露出 | 亚洲国产高清一区| 亚洲性人人天天夜夜摸| 国产婷婷色一区二区三区在线| 久久九九有精品国产23| 亚洲人成绝费网站色www| 亚洲欧美在线看| 亚洲国产成人在线视频| 欧美亚州韩日在线看免费版国语版| 先锋影音久久| 亚洲精品视频在线观看网站| 久久精品国产久精国产爱| 亚洲激情视频网| 国产热re99久久6国产精品| 免费视频久久| 午夜精品偷拍| 一本大道久久精品懂色aⅴ| 久久综合久久久| 亚洲欧美自拍偷拍| 亚洲欧洲精品一区二区| 国产日韩高清一区二区三区在线| 欧美bbbxxxxx| 久久久久久久一区二区三区| 一区二区欧美国产| 亚洲电影av在线| 久久综合激情| 久久av在线| 亚洲欧美日韩另类| 一区二区三区导航| 亚洲精品1区| 在线视频观看日韩| 国产一区视频在线看| 国产精品久久久久久久久久久久久 | 亚洲国产精品精华液2区45| 久久精品人人做人人爽电影蜜月 | 极品少妇一区二区| 国产精品一区二区男女羞羞无遮挡| 欧美福利影院| 久久这里只有| 欧美一区国产在线| 亚洲欧美一区二区三区久久| 一本色道久久综合狠狠躁篇的优点| 欧美激情va永久在线播放| 另类图片国产| 美国成人毛片| 免费在线亚洲欧美| 老司机午夜免费精品视频 | 亚洲一区欧美二区| 一区二区三区日韩| 在线视频亚洲一区| 一区二区三区 在线观看视| 亚洲裸体在线观看| 日韩网站在线看片你懂的| 亚洲精品影院| 一区二区三区 在线观看视| 亚洲精品综合精品自拍| 亚洲精品一区二区三区蜜桃久| 亚洲精品久久7777| av成人手机在线| 亚洲少妇最新在线视频| 亚洲一区二区在线免费观看视频| 亚洲综合成人在线| 欧美亚洲综合另类| 久久久免费精品| 欧美国产激情| 99re这里只有精品6| 亚洲一级网站| 久久久999精品免费| 欧美a级大片| 国产精品高潮呻吟久久av黑人| 国产精品视频自拍| 一区二区三区在线高清| 亚洲国产综合91精品麻豆| 一本到高清视频免费精品| 午夜视频在线观看一区二区三区| 久久av一区二区三区亚洲| 欧美成人精品高清在线播放| 亚洲人成在线播放网站岛国| 一区二区三区你懂的| 久久国产夜色精品鲁鲁99| 你懂的网址国产 欧美| 欧美网站大全在线观看| 国产日韩欧美中文| 亚洲人成小说网站色在线| 亚洲一区影院| 欧美11—12娇小xxxx| 亚洲少妇自拍| 美女图片一区二区| 国产精品一级| 亚洲最新中文字幕| 久久天天躁狠狠躁夜夜av| 亚洲美女黄网| 久久一区中文字幕| 国产精品乱人伦一区二区 | 韩国在线一区| 宅男在线国产精品| 免费一级欧美在线大片| 亚洲私人黄色宅男| 欧美国产日韩在线| 国产自产2019最新不卡| 亚洲手机在线| 欧美激情免费在线| 午夜欧美理论片| 欧美三级在线视频| 最新国产成人av网站网址麻豆| 久久黄金**| 亚洲免费在线视频一区 二区| 欧美激情视频在线免费观看 欧美视频免费一 |