国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CSocket Class

CSocket Class

Visual Studio 2015
 

發(fā)布日期: 2016年7月

若要了解有關(guān) Visual Studio 2017 RC 的最新文檔,請參閱 Visual Studio 2017 RC 文檔。

從 CAsyncSocket比派生,繼承其 Windows 套接字 API 的封裝,表示較高級別的抽象 CAsyncSocket 對象。

class CSocket : public CAsyncSocket  

公共構(gòu)造函數(shù)

名稱描述
CSocket::CSocket構(gòu)造 CSocket 對象。

公共方法

名稱描述
CSocket::Attach附加 SOCKET 句柄 CSocket 對象。
CSocket::CancelBlockingCall移除當(dāng)前正在進行阻止的調(diào)用。
CSocket::Create創(chuàng)建一個套接字。
CSocket::FromHandle返回指向 CSocket 對象命名 SOCKET 處理。
CSocket::IsBlocking確定塊是否調(diào)用正在進行。

受保護的方法

名稱描述
CSocket::OnMessagePending調(diào)用過程等待消息,當(dāng)?shù)却龎K調(diào)用時完成。

CSocket 與選件類 CSocketFile 和 CArchive 使用管理發(fā)送和接收數(shù)據(jù)。

CSocket 對象還提供塊,對 CArchive的同步操作非常重要。 塊函數(shù),例如 Receive,Send,ReceiveFrom,SendTo,并且,Accept (所有繼承 CAsyncSocket),則不會返回在 CSocket的一個 WSAEWOULDBLOCK 錯誤。 相反,這些函數(shù)等待,直到操作完成。 此外,原始的調(diào)用將停止與該錯誤 WSAEINTR,如果 CancelBlockingCall 調(diào)用,當(dāng)其中一種功能塊時。

若要使用 CSocket 對象,請調(diào)用構(gòu)造函數(shù),然后調(diào)用 Create 創(chuàng)建基礎(chǔ) SOCKET 句柄 (類型 SOCKET)。 Create 的默認參數(shù)創(chuàng)建流,套接字,但,則使用具有 CArchive 對象的套接字,可以指定參數(shù)創(chuàng)建數(shù)據(jù)進行套接字,或者綁定到特定端口創(chuàng)建服務(wù)器套接字。 在客戶端上使用服務(wù)器端,的 Connect 和 Accept 連接到客戶端套接字。 然后創(chuàng)建一 CSocketFile 對象并將它設(shè)置為 CSocketFile 構(gòu)造函數(shù)的 CSocket 對象。 接下來,創(chuàng)建發(fā)送的一 CArchive 對象和一個收到的數(shù)據(jù) (根據(jù)需要),然后將它們與 CArchive 構(gòu)造函數(shù)的 CSocketFile 對象。 當(dāng)通信完成時,銷毀CArchive、CSocketFile和 CSocket 對象。 SOCKET 數(shù)據(jù)類型在文章 Windows 套接字:背景所述。

當(dāng)您使用 CArchive 和 CSocketFile 和 CSocket時,可能會遇到 CSocket::Receive 輸入循環(huán)的情況 ( PumpMessages(FD_READ)) 等待請求的少量字節(jié)。 這是因為,Windows 套接字只允許一 recv 每個 FD_READ 通知調(diào)用,但是,CSocketFile 和 CSocket 允許多個 recv 每 FD_READ 調(diào)用。 如果收到 FD_READ,而沒有讀取數(shù)據(jù),應(yīng)用程序停止。 如果不會收到另一個 FD_READ,應(yīng)用程序停止間通信套接字。

通過以下方式可以解決此問題。 在您的套接字選件類 OnReceive 方法,請調(diào)用 CAsyncSocket::IOCtl(FIONREAD, ...),在調(diào)用您的郵件類之前Serialize 方法,當(dāng)從套接字要讀取的所需的數(shù)據(jù)超過一 TCP 數(shù)據(jù)包時 (中等的網(wǎng)絡(luò),通常至少 1096 個字節(jié)的最大傳輸單位的范圍)。 如果可用數(shù)據(jù)的大小程度低于必要,等待所有數(shù)據(jù)接收和此時開始這次讀取操作。

在下面的示例中,m_dwExpected 是用戶所需接收的近似字節(jié)數(shù)。 假定,可以在代碼中的其他位置聲明它。

void CChatSocket::OnReceive(int nErrorCode){   CSocket::OnReceive(nErrorCode);   DWORD dwReceived;   if (IOCtl(FIONREAD, &dwReceived))   {      if (dwReceived >= m_dwExpected)   // Process only if you have enough data         m_pDoc->ProcessPendingRead();   }   else   {      // Error handling here   }}

 說明

在使用 MFC 套接字在靜態(tài)鏈接的 MFC 應(yīng)用程序時的輔助線程,則必須對使用套接字初始化套接字庫的每個線程的 AfxSocketInit。 默認情況下,AfxSocketInit 在主線程僅調(diào)用。

有關(guān)更多信息,請參見 在 MFC 的 Windows 套接字Windows 套接字:使用套接字與存檔,Windows 套接字:套接字具有如何的存檔工作Windows 套接字:操作的順序,Windows 套接字:套接字的示例使用中的存檔。

CObject

CAsyncSocket

CSocket

標頭: afxsock.h

CAsyncSocket Class
層次結(jié)構(gòu)圖
CAsyncSocket Class
CSocketFile Class

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CAsyncSocket,CSocket內(nèi)幕及其用法
第十四章 SOCKET類的設(shè)計和實現(xiàn)
基于多線程的CSocket網(wǎng)絡(luò)編程技術(shù)
Windows Sockets網(wǎng)絡(luò)編程讀書筆記(及簡單C/S實現(xiàn))
MFC疑難注解:CAsyncSocket及CSocket
CSocket對象不能在線程之間傳遞
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服