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

首頁 > 編程 > .NET > 正文

.net手機軟件開發(六)OBEX應用——文件傳輸部分

2024-07-10 12:58:40
字體:
來源:轉載
供稿:網友
(六) obex應用——文件傳輸部分

在手機數據傳輸方面基本obex應用分為

l 文件傳輸

l irmc同步

文件傳輸又可以細分為以下基本操作

l 初始化連接

l 斷開連接

l 設置路徑

l 取得目錄信息

l 創建目錄

l 上傳下載文件

l 刪除文件或空目錄

在筆者的軟件當中設計了obex這個類,里面包含了以上所有的基本操作。另外針對m55的服務端的特殊性又設計了更名、取得磁盤空間信息、移動、拷貝文件的功能。具體請參考源代碼。

下面具體講述各個操作的細節。

l 初始化連接

初始化連接包括了使手機進入obex狀態再到發送connect指令的一系列過程。具體流程參考下圖。

atæat^sqwe=0æat^sqwe=3æconnectæ連接到folder-listing service

其中at^sqwe=0和at^sqwe=3是西門子特有的隱藏的at指令,甚至在官方的at指令集里面都沒有提到。其作用是初始化手機到obex模式。

發送connect指令收到手機回復以后確定max packet length等參數。最后連接到folder-listing service進行文件操作。如果需要irmc同步的話,在connect后直接連接到irmc sync service即可,手機立刻進入同步模式,所有的應用程序退出。

在筆者的程序中當中首先使用at指令確定手機當前的工作,如果超時,嘗試發送+++并等待1秒鐘以便手機從不正常的obex狀態中退出。然后在此發送at,成功后即進行文件操作,否則引發一個錯誤。

l 斷開連接

這里的斷開連接是指從obex模式退出到at狀態中。在at指令中,連續發送三個0x2b然后等待一秒鐘以上即可退出數據模式進入常規at模式。

l 設置路徑

程序中使用setpath操作設置路徑。需要注意的是,可以設計兩種風格的過程:一種使用絕對路徑,另一種使用相對路徑。

對于手機而言,經筆者實踐證明,使用絕對路徑要比使用相對路徑方便,而且更準確,但效率上稍遜,特別是在多層目錄的情況下。由于手機沒有能夠返回當前路徑的方法,所以相對路徑總難以控制,只有通過程序控制,極容易出現錯誤。所以建議使用絕對路徑。

如果使用絕對路徑,那么路徑名將呈現/path1/path2這種形式。首先回到根目錄,然后一級一級的到達目的。在筆者的obex類當中,可以看到backtoroot這個過程。其作用就是把當前程序路徑切換到根目錄以免引起混亂。

l 取得目錄信息

要取得一個目錄的文件信息可以用發送get指令。該get指令需要一個typeheader,其值為x-obex/folder-listing

隨后服務端會返回一個xml文件,包含了整個目錄的信息。例如子目錄名、文件名、大小、最后修改時間。再通過xml解析后就會得到目錄信息。

l 創建目錄

當setpath的flags的bit1設為1并且無法找到目錄時,服務端會創建這個目錄并進入。

請注意,再次使用setpath并將flags的bit0設為1返回上層目錄,否則容易引起混亂。

l 上傳下載文件

使用put和get命令可以實現上傳和下載文件。注意所有的文件操作都在setpath所指定的目錄下進行。

使用put命令實現上傳時,至少需要提供nameheader,bodyheader,一般還要提供lengthheader,datetimeheader。大文件傳輸需要正確處理bodyheader,不能超出了服務端最大所能接收的packet的大小,否則會出現錯誤。

需要注意的是如果當前文件存在,那么put命令不會覆蓋已有的文件而是追加,導致錯誤。傳輸文件之前需要首先刪除同名文件。

使用get命令實現下載時,只需要提供nameheader即可。具體例子參考上一節。

l 刪除文件或空目錄

使用put命令,其nameheader指定為文件名或目錄名并將bodyheader設置為空即可。

非空目錄無法刪除,會返回錯誤。



西門子手機還有移動、拷貝等功能,具體實現方法請參閱obex源代碼。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定州市| 桦甸市| 象山县| 宁安市| 桂平市| 吉林市| 漾濞| 邯郸县| 资源县| 宁晋县| 蒙阴县| 竹北市| 淮滨县| 克东县| 汝州市| 九龙坡区| 肥乡县| 上思县| 寿光市| 长春市| 天峻县| 阿拉尔市| 伽师县| 洞口县| 平陆县| 商都县| 贵州省| 高平市| 泌阳县| 曲沃县| 宁德市| 隆子县| 普洱| 韩城市| 深圳市| 乌拉特前旗| 张家界市| 和顺县| 崇义县| 财经| 聊城市|