freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第9章高級網(wǎng)絡(luò)編程api-文庫吧

2025-04-22 10:38 本頁面


【正文】 息 。 第 9章 高級網(wǎng)絡(luò)編程 API 20. OnOutOfBandData(?)函數(shù) OnOutOfBandData(?)函數(shù)格式如下: virtual void OnOutOfBandData( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù) , 如果一些非常急需的數(shù)據(jù)已經(jīng)準備好 , 就會發(fā)出相應(yīng)的消息 , 這一類消息的處理需要由該函數(shù)完成 。 21. OnReceive( )函數(shù) OnReceive(?)函數(shù)格式如下: virtual void OnReceive( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù),當一個套接口已經(jīng)準備好數(shù)據(jù),并可以由函數(shù) Receive(?)接收時,就可以調(diào)用此函數(shù)處理相應(yīng)的消息。舉例說明如下: 第 9章 高級網(wǎng)絡(luò)編程 API // 下面的 CMyAsyncSocket是 CAsyncSocket類的派生類 void CMyAsyncSocket::OnReceive(int nErrorCode) { static int i=0。 i++。 TCHAR buff[4096]。 int nRead。 nRead = Receive(buff, 4096)。 switch (nRead) 第 9章 高級網(wǎng)絡(luò)編程 API { case 0: Close(?)。 break。 case SOCKET_ERROR: if (GetLastError(?) != WSAEWOULDBLOCK) { AfxMessageBox (Error occurred)。 Close(?)。 } 第 9章 高級網(wǎng)絡(luò)編程 API break。 default: buff[nRead] = 0。 //terminate the string CString szTemp(buff)。 m_strRecv += szTemp。 // m_strRecv 是一 個在CMyAsyncSocket中說明的字符串 if ((bye) == 0 ) ShutDown(?)。 } CAsyncSocket::OnReceive(nErrorCode)。 } 第 9章 高級網(wǎng)絡(luò)編程 API 22. OnSend( )函數(shù) OnSend(?)函數(shù)格式如下: virtual void OnSend( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù) , 當一個套接口已經(jīng)準備好數(shù)據(jù) , 并可以由 Send(?)函數(shù)發(fā)送時 , 就可以調(diào)用該函數(shù)處理相應(yīng)的消息 。 舉例說明如下: // CMyAsyncSocket是 CAsyncSocket派生類并定義如下變量 // CString m_sendBuffer。 // int m_nBytesSent。 // int m_nBytesBufferSize。 第 9章 高級網(wǎng)絡(luò)編程 API void CMyAsyncSocket ::OnSend(int nErrorCode) { while (m_nBytesSent m_nBytesBufferSize) { int dwBytes。 if ((dwBytes = Send((LPCTSTR)m_sendBuffer + m_nBytesSent, m_nBytesBufferSize m_nBytesSent)) == SOCKET_ERROR) { if (GetLastError(?) == WSAEWOULDBLOCK) break。 else 第 9章 高級網(wǎng)絡(luò)編程 API { TCHAR szError[256]。 wsprintf(szError, Server Socket failed to send: %d, GetLastError(?))。 Close(?)。 AfxMessageBox (szError)。 } } else { m_nBytesSent += dwBytes。 } } 第 9章 高級網(wǎng)絡(luò)編程 API if (m_nBytesSent == m_nBytesBufferSize) { m_nBytesSent = m_nBytesBufferSize = 0。 m_sendBuffer = 。 } CAsyncSocket::OnSend(nErrorCode)。 } 第 9章 高級網(wǎng)絡(luò)編程 API 23. Receive( )函數(shù) Receive(?)函數(shù)格式如下: virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 )。 該函數(shù)用于獲得已經(jīng)與當前套接口建立連接的遠程套接口發(fā)送的數(shù)據(jù) , 該數(shù)據(jù)存入 lpBuf緩沖區(qū)中 。 24. ReceiveFrom(?)函數(shù) ReceiveFrom(?)函數(shù)格式如下: 第 9章 高級網(wǎng)絡(luò)編程 API int ReceiveFrom( void* lpBuf, int nBufLen, CStringamp。 rSocketAddress, ?UINTamp。 rSocketPort, int nFlags = 0 )。 或 int ReceiveFrom( void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, ?int* lpSockAddrLen, int nFlags = 0 )。 該函數(shù)用于從無連接的遠程套接口上讀取數(shù)據(jù)報信息 。 25. Send( )函數(shù) Send(?)函數(shù)格式如下: virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0 )。 該函數(shù)用于向與當前套接口已經(jīng)建立連接的遠程套接口發(fā)送數(shù)據(jù) 。 第 9章 高級網(wǎng)絡(luò)編程 API 26. SendTo( )函數(shù) SendTo(?)函數(shù)格式如下: int SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )。 或 int SendTo( const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0 )。 該函數(shù)用于向無連接的遠程套接口發(fā)送數(shù)據(jù) 。 第 9章 高級網(wǎng)絡(luò)編程 API 27. ShutDown( )函數(shù) ShutDown(?)函數(shù)格式如下: BOOL ShutDown( int nHow = sends )。 調(diào)用該函數(shù)并不影響套接口的打開狀態(tài) , 它不關(guān)閉套接口 , 只可以控制是否能夠繼續(xù)發(fā)送或接收數(shù)據(jù) , 即是否允許繼續(xù)調(diào)用 Send(?)和 Receive(?)函數(shù) 。 因此 , 可以將 ShutDown(?)的功能理解為對接收或發(fā)送功能的關(guān)閉 , 具體的控制模式有三種 , 如表 92所示 。 第 9章 高級網(wǎng)絡(luò)編程 API 表 92 控制模式的值 關(guān)閉方式 值 含 義 R e c e i v e s 0 關(guān)閉接收功能 S e n d s 1 關(guān)閉發(fā)送功能 B o t h 2 同時關(guān)閉接收功能和發(fā)送功能 第 9章 高級網(wǎng)絡(luò)編程 API CSocket類 CSocket類派生于 CAsyncSocket類 , 它繼承了父類中一些常用 、 易懂的 Windows Sockets API 函數(shù) , 并對CAsyncSocket底層中較難控制的一些 API函數(shù)或成員函數(shù)進行了處理 , 為 Winsock API提供了一個更高級別的編程接口 。它通過 MFC CArchive對象進行信息的接收和發(fā)送操作 , 使得套接口數(shù)據(jù)輸入和輸出如同使用 MFC的文檔一樣簡捷 、易用 。 同時 , 它支持模塊化的后臺信息處理 , 解決了CAsyncSocket中較難克服的多線程處理問題 。 CSocket類提供了如下的一些常用函數(shù) 。 第 9章 高級網(wǎng)絡(luò)編程 API 1. Attach( )函數(shù) Attach(?)函數(shù)格式如下: BOOL Attach( SOCKET hSocket )。 該函數(shù)將一個套接口句柄連接到一個 CSocket對象實例上 , 從而可以建立與另一端的連接 。 舉例說明如下 。 // ... class CSockThread : public CWinThread { // ... Other function and member declarations protected: CSocket m_sConnected。 }。 第 9章 高級網(wǎng)絡(luò)編程 API SOCKET hConnected。 BOOL CSockThread::InitInstance(?) { // Attach the socket object to the socket handle // in the context of this thread. (hConnected)。 return TRUE。 } // This listening socket has been constructed // in the primary thread. 第 9章 高級網(wǎng)絡(luò)編程 API void CListeningSocket::OnAccept(int nErrorCode) { // This CSocket object is used just temporarily // to accept the ining connection. CSocket sConnected。 Accept(sConnected)。 // Detach the newly accepted socket and save // the SOCKET handle. 第 9章 高級網(wǎng)絡(luò)編程 API hConnected = (?)。 // After detaching it, it should no longer be // used in the context of this thread. // Start the other thread. AfxBeginThread(RUNTIME_CLASS(CSockThread))。 } 第 9章 高級網(wǎng)絡(luò)編程 API 2. Create( )函數(shù) Create(?)函數(shù)格式如下: BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, ? LPCTSTR lpszSocketAddress = NULL )。 在調(diào)用 CSocket的構(gòu)造函數(shù) (該構(gòu)造函數(shù)不帶參數(shù) )創(chuàng)建了一個空的 CSocket后 , 再調(diào)用 Create(?)函數(shù)完成具體的初始化工作 。 該函數(shù)的三個參數(shù)都有默認值 , 對客戶機套接口來說 , 使用默認參數(shù)就可以了 。 但對服務(wù)器套接口來說 ,通常還要為套接口指定一個端口號 。 第 9章 高級網(wǎng)絡(luò)編程 API 該函數(shù)的默認套接口類型是 SOCK_STREAM, 即流式套接口 , 當然在程序中我們還可以使用數(shù)據(jù)報套接口SOCK_DGRAM。 但要注意 , 如果我們打算使用 CArchive對象 , 則必須使用默認的套接口類型 SOCK_DGRAM。 當一個服務(wù)器有多個 IP地址時 , 可以為套接口指定一個特定的地址 。 地址的默認值為 NULL, 指出套接口被創(chuàng)建時使用 INADDR_ANY。 3. FromHandle( )函數(shù)
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1