CSocketFile类
4.3? FTP文件處理
在FTP客戶端編程中,用戶可以通過一些類或者函數,獲得服務器的文件目錄和實現上傳、下載文件等功能。例如,在MFC中,CSocketFile類和CArchive類是在FTP編程中很重要的兩個類。本節將重點介紹這兩個類的一些用法和示例。
4.3.1? CSocketFile類的使用
在MFC中定義了一個在套接字編程中使用的類:CSocketFile類;它可以充分發揮CSocket類的特性。CSocketFile類是CFile的派生類,它主要用來在Windows Sockets編程中發送和接收序列化數據(如結構體數據)。通過把CSocketFile類對象、CArchive對象和CSocket創建的套接字對象聯系起來,可以實現數據的加載(接收)和存儲(發送)。
1.構造函數
在實際編程中,將CSocketFile對象和CSocket對象直接聯系起來可以用CSocketFile類的構造函數來完成。CSocketFile類構造函數原型如下:
BOOL?bArchiveCompatible?=?TRUE?);?
參數pSocket是一個CSocket對象;bArchiveCompatible指示該文件對象是否與一個CArchive對象一起使用,默認為true。該構造函數可以有兩種調用方式。例如:
m_clientsocket關聯的文件指針對象?
上述代碼中,是通過new關鍵字調用CSocketFile類的構造函數創建一個指針對象的。第二種調用方式如下:
與m_clientsocket關聯的文件對象?
這兩種調用方式都需要在實例化對象m_sockfile之后,再與CArchive對象相關聯,并由CArchive對象指定其屬性。屬性取值如表4.3所示。代碼如下:
關聯的串行化對象并指定屬性 ?
注意:在這里使用完串行化對象ar以后,需要使用函數CArchive::Close()關閉,確保數據(命令)及時存儲(發送)。
2.CSocketFile 與CFile進行比較
CSocketFile類雖然派生于CFile類,但是它卻屏蔽掉了函數CFile::Open()。也就是說,用戶在實際編程時,不能使用CSocketFile對象直接去調用函數Open()打開文件。
注意:由于在本章實例中,有關文件的操作大多是由CArchive類進行的。因此,關于CSocketFile類的其他函數請參看MSDN,這里不再進行贅述。
總結
以上是生活随笔為你收集整理的CSocketFile类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用CArchive类进行序列化
- 下一篇: C++网络编程概述