在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關(guān) 閉

            新聞中心

            EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > Windows平臺(tái)下的網(wǎng)絡(luò)異步通訊編程技術(shù)

            Windows平臺(tái)下的網(wǎng)絡(luò)異步通訊編程技術(shù)

            作者: 時(shí)間:2012-04-28 來源:網(wǎng)絡(luò) 收藏

            3 使用CAsyncSocket類的通訊流程
            在理解了上述的機(jī)制后,CAsyncSocket的通信流程:客戶方在使用CAsyncSocket::Connect()時(shí),往往返回一個(gè)WSAEWOULDBLOCK的錯(cuò)誤,實(shí)際上這不應(yīng)該算作一個(gè)錯(cuò)誤,它是Socket的提醒,由于使用了非阻塞Socket方式,所以操作需要時(shí)間,不能瞬間建立。那么可以等待,等待連接成功,于是許多程序員就在調(diào)用Connect()之后,Sleep(0),然后不停地用WSAGetLastError()或者CAsyncSocket::GetLast Error()查看Socket返回的錯(cuò)誤,直到返回成功為止。這是一種錯(cuò)誤的做法,斷言不能達(dá)到預(yù)期目的。事實(shí)上,可以在Connect()調(diào)用之后等待CAsyncSocket::OnConnect()事件被觸發(fā)。類似地,Send()如果返回WSAEWOULDBLOCK錯(cuò)誤,在OnSend()處等待,Receive()如果返回WSAE WOULDBLOCK錯(cuò)誤,則在OnReceive()處等待,具體的內(nèi)部通信流程如圖2所示。

            本文引用地址:http://www.biyoush.com/article/202341.htm

            c.JPG



            4 使用CAsyncSocket編程的程序框架
            在進(jìn)行C/S編程之前,需在定義應(yīng)用程序行為的文件030 303.cpp中的Initlnstance()函數(shù)里調(diào)用AfxSocketInit()函數(shù)來初始化Wind ows Sockets。
            (1)服務(wù)器端
            以public的方式從CAsyncSocket類派生新類CServerSock,并重載OnAccept、OnReceive、OnSend函數(shù)。
            函數(shù)重載完成后,在主窗口構(gòu)造新的CServeSock對(duì)象,用來監(jiān)聽來自客戶機(jī)的連接,添加代碼如下:
            CServeSock m_ListenSock;//m_ListenSock為監(jiān)聽套接字
            m_ListenSock.Create(m_Port,SOCK_STREAM,F(xiàn)D ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)
            m_ListenSock→Listen(int nConnectionBacklog=5);
            函數(shù)Send()的參數(shù)說明:
            nconnectionBacklog:等待連接的最大隊(duì)列長(zhǎng)度。
            此時(shí)服務(wù)器開始監(jiān)聽來自客戶機(jī)的連接請(qǐng)求。
            (2)客戶機(jī)端
            以public的方式從CAsyncSocket類派生新類CClientSock,與服務(wù)器端類似,重載OnReceive()、OnSend()函數(shù)。
            已經(jīng)搭建好使用CAsyncSocket類實(shí)現(xiàn)基于TCP協(xié)議的異步通訊的框架,具體的應(yīng)用程序可以在此基礎(chǔ)上進(jìn)行豐富與修改。

            5 結(jié)束語
            CAsyncSocket類為使用Socket提供了方便。建立Socket的WSAStartup過程和bind過程被簡(jiǎn)化成為Create過程,IP地址類型轉(zhuǎn)換、主機(jī)名和IP地址轉(zhuǎn)換的過程中許多復(fù)雜的變量類型都被簡(jiǎn)化成字符串和整數(shù)操作,特別是CAsyncSocket類的異步特點(diǎn),完全可以替代繁瑣的線程操作。MFC提供了大量的類庫,若能靈活地使用,可大大提高編程效率。

            tcp/ip相關(guān)文章:tcp/ip是什么



            上一頁 1 2 3 下一頁

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉