我正在尋找的最佳方式的建議發送二進制數據發送從遠程GPRS設備/接收數據,通過端口80通過HTTP
創建一個隨機端口工作正常上一個普通的TCP套接字,但許多運營商只允許端口80 HTTP流量通過他們的代理,然後期望HTTP ASCII數據(爲此它們可以根據需要修改頭文件)
因此,我的設備是否應該在持久http連接上創建POST請求,然後接收base64編碼的響應來自Web服務?我不確定移動代理在涉及二進制數據時的行爲方式。是否有推薦的方法來執行此操作?
我可以調整設備的固件和服務器端應用程序。
[編輯]
我想知道是否有標準(或多或少)的方式來做到這一點。對於各種數據記錄和工業系統,需要通過套接字連接發送大量二進制數據。對於以太網連接,通常只有適應某些防火牆的問題,但持久的二進制連接在任意端口上都沒有問題。
然而,移動互聯網服務提供商往往只限制其80端口的「數據計劃」。他們也冒昧弄砸了HTTP標頭,並且可能還有HTML數據本身。這是我需要找出潛在的陷阱和方法來規避它們。
- 簡單地發送base64編碼數據的工作?
- 如何處理HTTP會話?任意套接字可以長時間保持活動狀態,但HTTP動詞通常是短暫的。這是否意味着我需要爲每個數據包創建一個新的連接?或者有沒有辦法通過單個連接發送服務器響應?
- ISP代理如何處理數據或頭文件?例如,即使服務器關閉它,代理服務器有時也可以保持連接處於活動狀態。
+1謝謝。一個小小的說明:*移動運營商通常會限制對他們理解的內容類型的響應的篡改* - 這是否意味着我應該使用他們無法理解的內容類型? – Groo
移動運營商所做的轉換通常針對媒體類型,他們知道可以返回「等效」響應。例如壓縮JPEG圖像或將CSS/Javascript內聯到HTML文件中。如果您使用專有格式發送數據,則可以使用類似「application/vnd.company-name」的媒體類型。文件類型「 - 這不太可能由中介轉變,因爲他們不理解格式。 – johnstok
@johnstok Content-Length標頭指定以字節爲單位的任何數據的長度。因此,無論數據是符合標準還是專有,運營商都可以轉發這些字節。 – ardsrk