国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Windows Sockets:操作順序

2019-11-17 05:09:56
字體:
供稿:網(wǎng)友
本文以對照方式闡釋了服務器套接字和客戶端套接字的操作順序。因為這些套接字使用 CArchive 對象,所以它們必然是流式套接字。流式套接字通信的操作順序 在構(gòu)造 CSocketFile 對象之前,下面的順序?qū)?CAsyncSocket 和 CSocket 都是準確的(只有少數(shù)幾個參數(shù)不同)。從構(gòu)造 CSocketFile 對象開始,順序只適用于 CSocket 。下表闡釋了在客戶端和服務器之間設置通信的操作順序。 設置服務器和客戶端之間的通信 服務器 客戶端 // constrUCt a socket CSocket sockSrvr; // construct a socket CSocket sockClient; // create the SOCKET sockSrvr.Create(nPort); 1,2 // create the SOCKET sockClient.Create( ); 2 // start listening sockSrvr.Listen( ); // seek a connection sockClient.Connect(strAddr, nPort); 3,4 // construct a new, empty socket CSocket sockRecv; // accept connection sockSrvr.Accept( sockRecv ); 5 // construct file object CSocketFile file(&sockRecv); // construct file object CSocketFile file(&sockClient); // construct an archive CArchive arIn(&file,
CArchive::load); - 或 - CArchive arOut(&file,
CArchive::store); - 或兩者 - // construct an archive CArchive arIn(&file,
CArchive::load); - 或 - CArchive arOut(&file,
CArchive::store); - 或兩者 - // use the archive to pass data: arIn >>dwValue; - 或 - arOut < < dwValue; 6 // use the archive to pass data: arIn >>dwValue; - 或 - arOut < < dwValue; 6 1. 這里的 nPort 是端口號。有關端口的具體信息,請參見 Windows Sockets:端口和套接字地址。 2. 服務器必須始終指定一個端口,以便客戶端可以連接。 Create 調(diào)用有時也指定地址。在客戶端使用默認參數(shù),這些參數(shù)要求 MFC 使用任何可用端口。 3. 這里的 nPort 是端口號, strAddr 是計算機地址或網(wǎng)際協(xié)議 (ip) 地址。 4. 計算機地址可以采用幾種形式:“FTP.microsoft.com”、“microsoft.com”。IP 地址采用“以點分隔的數(shù)字”形式,如“127.54.67.32”。 Connect 函數(shù)查看地址是否為以點分隔的數(shù)字(但它不確保該數(shù)字是網(wǎng)絡上的有效計算機)。假如不是,則 Connect 使用其他某種形式的計算機名稱。 5. 當在服務器端調(diào)用 Accept 時,傳遞對新套接字對象的引用。必須首先構(gòu)造該對象,但不對它調(diào)用 Create 。注重,假如此套接字對象超出范圍,則連接關閉。MFC 將新對象連接到 SOCKET 句柄。可以在堆棧上構(gòu)造此套接字(如表中所示)或在堆上構(gòu)造。 6. 存檔和套接字文件在超出范圍時將被關閉。套接字對象超出范圍或被刪除時,對象的析構(gòu)函數(shù)也對此套接字對象調(diào)用 Close 成員函數(shù)。有關順序的其他說明 上表中顯示的調(diào)用順序適用于流式套接字。數(shù)據(jù)文報套接字是無連接的,不需要 CAsyncSocket::Connect、Listen 和 Accept 調(diào)用(但可有選擇地使用 Connect )。相反,假如正在使用 CAsyncSocket 類,則數(shù)據(jù)文報套接字使用 CAsyncSocket::SendTo 和 ReceiveFrom 成員函數(shù)。(假如對數(shù)據(jù)文報套接字使用 Connect ,則使用 Send 和 Receive 。)因為 CArchive 不適用于數(shù)據(jù)文報,假如套接字是數(shù)據(jù)文報,則不要使用帶存檔的 CSocket 。
CSocketFile 并不支持 CFile 的所有功能, CFile 成員(如 Seek )對套接字通信沒有意義,是不可用的。因此,某些默認 MFC Serialize 函數(shù)與 CSocketFile 不兼容。這對于 CEditView 類更是如此。不要試圖使用 CEditView::SerializeRaw 通過附加到 CSocketFile 對象的 CArchive 對象來序列化 CEditView 數(shù)據(jù),而應使用 CEditView::Serialize (無出處)。SerializeRaw 函數(shù)預期文件對象具有 CSocketFile 不支持的函數(shù),如 Seek 。 有關更多信息,請參見: Windows Sockets:使用帶存檔的套接字 Windows Sockets:使用 CAsyncSocket 類 Windows Sockets:端口和套接字地址 Windows Sockets:流式套接字 Windows Sockets:數(shù)據(jù)文報套接字 更多文章 更多內(nèi)容請看Windows操作系統(tǒng)安全集  Windows操作系統(tǒng)安裝  Windows頻道專題,或

上一篇:我的程序人生路

下一篇:5.  運算符

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 六盘水市| 鞍山市| 临汾市| 格尔木市| 太原市| 且末县| 晋宁县| 肃宁县| 温宿县| 崇明县| 西丰县| 固镇县| 柘荣县| 宝应县| 台湾省| 盘锦市| 扎鲁特旗| 本溪市| 年辖:市辖区| 巴中市| 大丰市| 光泽县| 定南县| 淳化县| 仙桃市| 肇源县| 监利县| 漯河市| 张掖市| 芷江| 沧源| 施甸县| 师宗县| 新沂市| 柯坪县| 临海市| 衡山县| 尖扎县| 山阴县| 陇川县| 日土县|