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

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>
            国产精品香蕉在线观看| 欧美日韩国产首页在线观看| 蜜臀av国产精品久久久久| 国产精品日本精品| 亚洲视频一区二区在线观看| 欧美激情国产高清| 麻豆久久婷婷| 亚洲国产成人午夜在线一区 | 亚洲国产高清自拍| 欧美有码视频| 国产午夜精品视频免费不卡69堂| 亚洲一区在线观看视频| 亚洲精品视频一区| 欧美日韩精品久久久| 日韩一区二区精品视频| 久久视频一区| 久久久免费精品视频| 伊人婷婷欧美激情| 欧美激情欧美狂野欧美精品| 免费看亚洲片| 99av国产精品欲麻豆| 一区二区三区产品免费精品久久75| 另类激情亚洲| 一本大道久久a久久精品综合| 亚洲国产91| 欧美视频三区在线播放| 欧美亚洲视频| 久久久水蜜桃av免费网站| 精品av久久久久电影| 欧美激情黄色片| 欧美日一区二区在线观看| 午夜欧美精品| 久久久久国产精品厨房| 亚洲美女视频在线免费观看| 99视频一区二区| 狠狠色综合播放一区二区| 老司机成人网| 女主播福利一区| 亚洲自拍偷拍视频| 久久婷婷国产综合国色天香| 亚洲精品日本| 欧美一区二区三区在线免费观看| 精品电影在线观看| 中文在线资源观看网站视频免费不卡| 欧美护士18xxxxhd| 欧美在线你懂的| 欧美黄免费看| 久久久久久高潮国产精品视| 欧美激情第五页| 久久精品夜夜夜夜久久| 欧美精品一区二| 亚洲欧美国产高清| 久久夜精品va视频免费观看| 亚洲女人天堂成人av在线| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美日本国产有色| 免费欧美视频| 久久综合电影| 欧美伦理a级免费电影| 亚洲欧美日韩成人| 欧美大色视频| 久久人体大胆视频| 国产精品欧美日韩一区| 91久久精品一区二区三区| 国产亚洲一区二区三区在线观看| 欧美本精品男人aⅴ天堂| 国产日韩精品久久| 一本久道久久综合婷婷鲸鱼| 亚洲人成7777| 久久偷看各类wc女厕嘘嘘偷窃| 性欧美18~19sex高清播放| 欧美日本中文字幕| 亚洲国产导航| 亚洲欧洲日本在线| 久久午夜激情| 久久在线观看视频| 国产一区二区三区在线观看网站| 亚洲一卡久久| 亚洲免费电影在线| 欧美国产高清| 亚洲激情影院| 日韩视频在线免费观看| 你懂的亚洲视频| 亚洲国产成人av| 在线观看欧美一区| 久久久亚洲国产天美传媒修理工| 久久久久综合网| 韩国成人福利片在线播放| 欧美一级片在线播放| 久久久久久精| 尤物精品在线| 久久这里只有| 亚洲第一区在线观看| 亚洲精品国产日韩| 欧美日韩免费一区| 日韩网站在线看片你懂的| 亚洲欧洲精品天堂一级| 欧美精品xxxxbbbb| 一本到12不卡视频在线dvd| 亚洲女女女同性video| 国产午夜精品理论片a级大结局 | 亚洲国产成人久久综合| 久久天天狠狠| 亚洲精品国产欧美| 午夜日韩视频| 精品av久久久久电影| 欧美成人亚洲成人| 一本一本久久| 亚洲一区二区在| 国产精品入口福利| 久久久久综合网| 亚洲精品123区| 性久久久久久久久| 在线观看亚洲一区| 欧美日韩精品二区第二页| 亚洲综合三区| 女同一区二区| 亚洲尤物在线视频观看| 国产在线日韩| 国产精品国码视频| 欧美经典一区二区三区| 久久久久久久久久久久久久一区| 亚洲天堂久久| 亚洲伦理网站| 欧美激情1区2区| 美玉足脚交一区二区三区图片| 亚洲你懂的在线视频| 夜夜嗨av一区二区三区免费区| 狠狠综合久久| 国内精品久久久久伊人av| 国产精品推荐精品| 国产精品久久91| 欧美日韩伦理在线免费| 欧美激情小视频| 欧美 日韩 国产精品免费观看| 久久精品视频免费播放| 久久成人在线| 欧美一区二区在线视频| 欧美亚洲一区在线| 午夜视频久久久| 午夜精彩国产免费不卡不顿大片| 亚洲性感激情| 亚洲伊人伊色伊影伊综合网| 一区二区毛片| 亚洲视频在线一区观看| 亚洲视频免费看| 亚洲综合色丁香婷婷六月图片| 国产精品99久久99久久久二8| 一片黄亚洲嫩模| 亚洲一品av免费观看| 亚洲欧美日韩国产综合精品二区| 亚洲午夜精品17c| 亚洲欧美在线一区二区| 性做久久久久久免费观看欧美| 午夜精品久久久久久久白皮肤| 亚洲欧美精品suv| 久久精品国产精品| 久久综合九色综合欧美狠狠| 欧美3dxxxxhd| 欧美日韩精品二区第二页| 国产精品久久久久久影视| 国产日韩精品一区二区浪潮av| 国产一区日韩欧美| 亚洲国产精品传媒在线观看| 亚洲人成精品久久久久| 亚洲一二三四区| 久久精品国产精品 | 亚洲一区二区三区四区五区午夜| 亚洲一区二区视频在线观看| 欧美一区二视频在线免费观看| 久久美女艺术照精彩视频福利播放| 久热精品在线| 日韩视频免费观看高清在线视频| 亚洲一区二区精品在线| 久久婷婷人人澡人人喊人人爽| 欧美精品日日鲁夜夜添| 国产农村妇女精品| 亚洲欧洲精品一区二区| 亚洲一二三四久久| 鲁大师影院一区二区三区| 亚洲欧洲在线播放| 欧美亚洲三区| 欧美喷潮久久久xxxxx| 国产日韩一区二区三区| 亚洲精品综合在线| 久久久久久久网站| 99天天综合性| 老色鬼精品视频在线观看播放| 国产精品v欧美精品∨日韩| 在线成人av| 欧美亚洲在线| 亚洲精品日韩久久| 久久久久国产一区二区三区| 国产精品国产三级国产专播精品人| 亚洲第一福利社区| 欧美在线二区| 一区二区日韩| 欧美日本成人| 亚洲激情社区| 久久一日本道色综合久久|