XMPP之檔案傳輸報文

2022-05-02 06:24:11 字數 1163 閱讀 4733

最近在做檔案傳輸,遇到只能傳送檔案到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...