最近在做檔案傳輸,遇到只能傳送檔案到spark,spark傳送檔案來不能接收,要麼一直等待,要麼發一下就要重試,這天終於找到問題的所在了我的openfire裡面的:伺服器->伺服器設定->檔案傳輸設定 裡面的**服務被禁用了,應該要使用裡面的「使用」
這是我同學總結分析出來的傳輸檔案的報文,由於我們兩個是一起在做,我就不去抓了,為了記筆記不得不發一下
傳送檔案場景:
1,對方拒接
2,對方同意接受
2.1對方中途中斷接收
2.2我方中途中斷傳送
2.3傳送成功
------------------------------拒絕接受
a請求向b傳送乙個檔案
b拒絕not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
------------------------------------同意接受,並完成傳送
a請求向b傳送乙個檔案。包含一些檔案的資訊,以及傳送檔案所使用的stream-method,提供了option,可選項,這裡
實現了ibb方式,所以只提供這種方式。
b同意接收檔案,同時也指明了使用ibb方式
a傳送乙個open表示初始化了通道,並通知對方,每一塊的data大小為4096(當然,這是指最大的,最後一塊可能沒有4096)
b回發乙個result表示接受。
a接著將傳送多次的data,直至將資料傳送完畢。注意:data中的seq是傳送的第幾塊資料
資料在這裡
b回覆乙個iq result表示收到上面的data。注意,只有收到b的這個回覆,a才會傳送下乙個data。
...經過多次傳送,資料傳送完成
a將會傳送乙個close告訴b,資料已經傳送完畢了
b回覆乙個iq result表示知道了
------------------------------------同意接受,但a中斷傳送
前面**一樣的
a傳送乙個close強制中斷傳送
b返回iq result確認
------------------------------------同意接受,但b中斷接收
前面**一樣
b傳送來乙個close強制中斷接收
a確認收到並停止繼續傳送
XMPP 兩個客戶端實現檔案傳輸
方式1在message裡面放檔案,但是message裡面只可以放字串。解決辦法1 把檔案都轉成base編碼後再字串,然後把字串放進body。這個方法不好。只可以針對小資料,一般一兩兆以上的就不要用這個方法。解決辦法2 先把,音訊,doc檔案等的上到伺服器。返回url,body裡面放對應檔案的url路...
VC檔案傳輸
vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...
簡單檔案傳輸
原理 檔案傳輸的原理其實很簡單,服務端先在某個埠監聽,等待客戶端的連線,連線成功後,服務端開啟指定的檔案,然後讀取檔案,再通過建立的套接字傳送給客戶端。如果要實現乙個服務端能與多個客戶端連線,則需要用到多執行緒,下面給出一對一的實現 有興趣的朋友可以用多執行緒實現一對多。程式 include inc...