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

正文內(nèi)容

第9章160高級網(wǎng)絡(luò)編程api(已修改)

2025-06-06 10:38 本頁面
 

【正文】 第 9章 高級網(wǎng)絡(luò)編程 API 第 9章 高級網(wǎng)絡(luò)編程 API MFC提供的 Winsock類 信報 API(MAPI) WinI API 其他網(wǎng)絡(luò)程序設(shè)計 API 習(xí)題 第 9章 高級網(wǎng)絡(luò)編程 API MFC提供的 Winsock類 CAsyncSocket類 CAsyncSocket類封裝了一些基本的 Windows Sockets API函數(shù) , 它提供了與較低層 Windows Sockets對話的接口 ,一般適合于有一定基礎(chǔ)的網(wǎng)絡(luò)編程者使用 , 可方便地進(jìn)行底層的網(wǎng)絡(luò)事件通知及信息回叫控制等操作 。 CAsyncSocket類定義了一組非常有用的成員函數(shù),這些函數(shù)的功能和格式與前幾章介紹的函數(shù)相同或類似,故下面只進(jìn)行一些簡單的說明。 第 9章 高級網(wǎng)絡(luò)編程 API 1. Accept(?)函數(shù) Accept(?)函數(shù)格式如下: virtual BOOL Accept(CAsyncSocketamp。 rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL )。 該函數(shù)用于在一個套接口上接受連接請求 。rConnectedSocket參數(shù)為監(jiān)聽套接口; lpSockAddr參數(shù)為指向地址的指針 , 其初始值為空 , 在連接建立后保存遠(yuǎn)程套接口的 IP地址; lpSockAddrLen參數(shù)為指向客戶套接口地址長度的指針 。 第 9章 高級網(wǎng)絡(luò)編程 API 2. AsyncSelect( )函數(shù) AsyncSelect(?)函數(shù)格式如下: BOOL AsyncSelect(long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE )。 該函數(shù)用于在套接口準(zhǔn)備好之后請求事件通知 。事件的含義見表 85, 其對應(yīng)的數(shù)值如表 91所示 。 第 9章 高級網(wǎng)絡(luò)編程 API 表 91 網(wǎng)絡(luò)事件的數(shù)值 網(wǎng)絡(luò)事件類型 對應(yīng)的數(shù)值 F D _ RE A D 0x01 F D _ W RIT E 0x02 F D _ O O B 0x04 F D _ A CCE P T 0x08 F D _ CO N N E CT 0x10 F D _ CL O S E 0x20 第 9章 高級網(wǎng)絡(luò)編程 API 3. Attach( )函數(shù) Attach(?)函數(shù)格式如下: BOOL Attach(SOCKET hSocket, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE )。 該函數(shù)的作用是將一個套接口句柄連接到一個CAsyncSocket對象實例上 , 即建立兩者的關(guān)聯(lián) , 這樣就可以實現(xiàn)與另一臺計算機(jī)的連接了 。 hSocket參數(shù)為套接口句柄 。 第 9章 高級網(wǎng)絡(luò)編程 API 4. Bind( )函數(shù) Bind(?)函數(shù)格式如下: BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL )。 或 BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen )。 該函數(shù)用于建立一個本地地址與一個套接口的關(guān)聯(lián),即綁定。它有兩種調(diào)用格式:第一種調(diào)用格式提供套接口、端口號和地址,使用的是字符串形式的地址,一般常用這種調(diào)用方法;第二種調(diào)用格式提供SOCKADDR結(jié)構(gòu)類型的地址參數(shù)。 第 9章 高級網(wǎng)絡(luò)編程 API 5. Close( )函數(shù) Close(?)函數(shù)格式如下: virtual void Close(?)。 該函數(shù)用于關(guān)閉套接口 , 釋放與套接口有關(guān)的系統(tǒng)資源 。 要注意的是 , Close(?)函數(shù)是在對象被刪除時由 CAsyncSocket的析構(gòu)函數(shù)自動調(diào)用的 。 Close(?)函數(shù)的 行 為 取 決 于 套 接 口 的 SO_LINGER 和SO_DONTLINGER選項 。 第 9章 高級網(wǎng)絡(luò)編程 API 6. Connect( )函數(shù) Connect(?)函數(shù)格式如下: BOOL Connect( LPCTSTR lpszHostAddress, UINT nHostPort )。 或 BOOL Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen )。 該函數(shù)用于建立與遠(yuǎn)程套接口的連接 。 它有兩種調(diào)用格式:第一種調(diào)用格式使用套接口 、 端口號和地址 , 且地址使用參數(shù)為字符串型的地址參數(shù) (如 “ ”)或點分十進(jìn)制的地址 (如 “ ”);第二種調(diào)用格式提供 SOCKADDR結(jié)構(gòu)類型的地址參數(shù) 。 第 9章 高級網(wǎng)絡(luò)編程 API 7. Create( )函數(shù) Create(?)函數(shù)格式如下: BOOL Create(UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT ?| FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL )。 在調(diào)用 CAsyncSocket的構(gòu)造函數(shù)創(chuàng)建了 CAsyncSocket對象后 , 需要調(diào)用 Create(?)函數(shù)來創(chuàng)建底層的套接口 。 因為CAsyncSocket的構(gòu)造函數(shù)沒有帶參數(shù) , 所以它只創(chuàng)建一個新的空套接口對象 , 創(chuàng)建底層套接口的真正工作是由Create(?)函數(shù)來完成的 。 第 9章 高級網(wǎng)絡(luò)編程 API Create(?)函數(shù)中 , 第一個參數(shù) nSocketPort用于指定一個分配給套接口的端口號 , 其默認(rèn)值為 0, 其真正的含義是告訴系統(tǒng)可以由系統(tǒng)給該套接口分配一個端口號 。 在開發(fā)服務(wù)器程序時 , 應(yīng)該明確地分配一個端口號 (即前面介紹的 “ 眾所周知 ” 的端口號 ), 這樣客戶就可以方便地使用該端口號與服務(wù)器連接 。 在開發(fā)客戶程序時 , 可以使用默認(rèn)的 0值 , 即由系統(tǒng)自動分配一個端口號 。 函數(shù)的第 二個參 數(shù) nSocketType 用來 指定是 流式(SOCK_STREAM)還是數(shù)據(jù)報式 (SOCK_DGRAM)套接口 。 第 9章 高級網(wǎng)絡(luò)編程 API 第三個參數(shù) lEvent用來指定一個將為應(yīng)用程序生成通知的事件 。 在默認(rèn)情況下 , 所有的事件都會生成通知 。 最后一個參數(shù) lpszSocketAddress允許我們?yōu)樘捉涌谥付ㄒ粋€網(wǎng)絡(luò)地址 , 其默認(rèn)值為 0, 表示套接口的地址將限定為本地機(jī) 。 該地址以點分十進(jìn)制的形式給定 , 如“ ”。 第 9章 高級網(wǎng)絡(luò)編程 API 8. Detach( )函數(shù) Detach(?)函數(shù)格式如下: SOCKET Detach(?)。 該函數(shù)的作用是將上一次建立關(guān)聯(lián)的套接口句柄斷開 ,并返回此套接口句柄 。 9. FromHandle(?)函數(shù) FromHandle(?)函數(shù)格式如下: static * PASCAL FromHandle( SOCKET hSocket )。 該函數(shù)的 hSocket參數(shù)指定一個套接口的句柄 , 其作用是返回與此套接口關(guān)聯(lián)的 CAsyncSocket對象的指針 。 如果沒有與此套接口關(guān)聯(lián)的 CAsyncSocket對象 , 則返回值為空(NULL)。 第 9章 高級網(wǎng)絡(luò)編程 API 10. GetLastError( )函數(shù) GetLastError(?)函數(shù)格式如下: static int GetLastError(?)。 在實際應(yīng)用中 , 當(dāng)調(diào)用的操作失敗后使用該函數(shù)返回套接口的錯誤代碼 。 11. GetPeerName( )函數(shù) GetPeerName(?)函數(shù)格式如下: BOOL GetPeerName(CStringamp。 rPeerAddress, UINTamp。 rPeerPort )。 或 BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen )。 第 9章 高級網(wǎng)絡(luò)編程 API 對于指定的套接口調(diào)用 GetPeerName(?)函數(shù) , 就可以返回與之對應(yīng)的遠(yuǎn)程套接口的 IP地址和端口號 。 遠(yuǎn)程套接口的 IP地址和端口號分別由 rPeerAddress和rPeerPort參數(shù)返回 , 也可以由指向 SOCKADDR結(jié)構(gòu)的參數(shù) lpSockAddr返回 。 12. GetSockName( )函數(shù) GetSockName(?)函數(shù)格式如下: BOOL GetSockName(CStringamp。 rSocketAddress, UINTamp。 rSocketPort )?;? BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen )。 第 9章 高級網(wǎng)絡(luò)編程 API 該函數(shù)的作用與 GetPeerName(?)函數(shù)類似 , 對于給定的套接口 , 就可以返回其 IP地址和端口號 。 IP地址和端口號分別由rSocketAddress 和 rSocketPort 參數(shù)返回 , 也 可 以 由 指 向SOCKADDR結(jié)構(gòu)的參數(shù) lpSockAddr返回 。 13. GetSockOpt( )函數(shù) GetSockOpt(?)函數(shù)格式如下: BOOL GetSockOpt( int nOptionName, void* lpOptionValue, ? ?int* lpOptionLen, int nLevel = SOL_SOCKET )。 該函數(shù)用于返回一個套接口的選項 。 獲取的選項值由參數(shù)lpOptionValue確定 , 其長度由 lpOptionLen指針指向的值確定;nOptionName參數(shù)指出要獲取的選項名 , nLevel參數(shù)說明選項級別 , 默認(rèn)的選項級別是 SOL_SOCKET。 該函數(shù)僅支持SOL_SOCKET和 IPPROTO_TCP兩個選項級別 。 第 9章 高級網(wǎng)絡(luò)編程 API 14. SetSockOpt( )函數(shù) SetSockOpt(?)函數(shù)格式如下: BOOL SetSockOpt( int nOptionName, const void* lpOptionValue, ?? int nOptionLen, int nLevel = SOL_SOCKET )。 該函數(shù)的作用與 GetSockOpt(?)函數(shù)相反 , 用于設(shè)置一個套接口的選項 。 要設(shè)置的選項值由參數(shù) lpOptionValue確定 ,其他參數(shù)的含義與 GetSockOpt(?)函數(shù)相同 。 15. IOCtl()函數(shù) IOCtl(?)函數(shù)格式如下: BOOL IOCtl( long lCommand, DWORD* lpArgument )。 該函數(shù)用于設(shè)置套接口的工作模式。 第 9章 高級網(wǎng)絡(luò)編程 API 16. Listen()函數(shù) Listen(?)函數(shù)格式如下: BOOL Listen( int nConnectionBacklog = 5 )。 該函數(shù)用于連接的監(jiān)聽 , 當(dāng)調(diào)用成功時返回一個非 0的值 。 參數(shù) nConnectionBacklog的取值區(qū)間為 1~ 5, 默認(rèn)值為 5,它指出正在等待連接的最大隊列長度 。 17. OnAccept( )函數(shù) OnAccept(?)函數(shù)格式如下: virtual void OnAccept( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù) , 當(dāng)一個套接口可能需要與另一端建立連接時 , 可以調(diào)用此函數(shù)處理相應(yīng)的消息 。參數(shù) nErrorCode指出最新的錯誤代碼 。 第 9章 高級網(wǎng)絡(luò)編程 API 18. OnClose( )函數(shù) OnClose(?)函數(shù)格式如下: virtual void OnClose( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù) , 當(dāng)一個套接口關(guān)閉時 , 可以調(diào)用此函數(shù)處理相應(yīng)的消息 。 19. OnConnect()函數(shù) OnConnect(?)函數(shù)格式如下: virtual void OnConnect( int nErrorCode )。 該函數(shù)是一個需要重載的回調(diào)函數(shù) , 當(dāng)一個套接口成功建立連接或連接失敗時 , 可以調(diào)用此函數(shù)處理相應(yīng)的消
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1