1. 程式人生 > >關於socket大資料收發解決方案

關於socket大資料收發解決方案

關於socket大資料收發
現在遇到個問題,我們這邊是做客戶端的。伺服器端是socket,不是我們寫的,看不到原始碼,走的是tcp協議。我們的socket客戶端在接收大資料(大約大於5000個byte)的時候總是不能一次性的接收所有的資料,一般是分2次。可能是1000,4000;2000,3000;4000,1000這樣不固定的。但有個奇怪的現象,在debug的時候,資料是能一次收完整的。後來發現只要在xx。read(buffer)之前sleep幾秒,資料就全了。現在不明白為什麼會這樣,以及怎麼解決。聽說tcp協議會保證資料包的順序和完整性嗎?現在資料的順序是對的,但不完整。因為開發機是不能上網的,所以我貼不了程式碼。客戶端用的是nio,寫法我看了下是網上很常見的那種。


------解決方案--------------------
其實你這並不是問題,只是你疑惑而已,當你清楚Socket的工作原理後,你就不會疑惑了。
Socket裡的inputStream和outputStream是負責Socket的輸入和輸出,並且他們都是阻塞的,除非關閉Socket或者shutdown對應的Stream。
為什麼你sleep幾秒後資料就全了呢?因為資料在Socket上是邊傳邊收,而不是傳完了再收,這是你理解的一個誤區,所以我建議你們在傳輸資料的時候,能在頭幾位(這裡是指byte)指明後面要接受的資料的長度,用read(buf,offset,len)方法肯定可以完整得到你想要的資料,不需要sleep(如果資料夠大的話,sleep也是解決不了問題的)。或者你可以用一組約定字元表示結束,一直讀到約定字元為止。 

------解決方案--------------------
TCP包的大小是有限制的,網路埠的快取也有大小。
所以,如果你用普通SOCKET讀資料,如果所續資料未收到,肯定會阻塞。 
------解決方案--------------------
最好修改下服務端。
就像樓上們說的,傳輸的資料有個一標誌位,標誌傳輸資料的總長度。這樣在服務端接收時去判斷這個標誌位,如是收到了指定長度的時間則停止接收,如果長度不夠,則迴圈接收,直到全部接收為止。 
------解決方案--------------------
探討

資料傳送是有時間的,而且一般是分批發送,所以一次性收不全很正常,迴圈收直到完整收下來就行了。


------解決方案--------------------

順便問下,如果伺服器端連續傳送aaa和bbb兩段報文。那接收方會不會收到bababa?
——絕對不會,但是可能會收到 3 組報文: aa ab bb

如果用長度來控制讀取的長度,是不是要傳送2次
——這是比較靠譜的做法

相關推薦

關於socket資料收發解決方案

關於socket大資料收發現在遇到個問題,我們這邊是做客戶端的。伺服器端是socket,不是我們寫的,看不到原始碼,走的是tcp協議。我們的socket客戶端在接收大資料(大約大於5000個byte)的時候總是不能一次性的接收所有的資料,一般是分2次。可能是1000,400

資料-平臺-解決方案-基礎架構一覽

 排名不分先後:哈哈 1、talkingdata  (資料平臺) 2、明略資料(解決方案) 3、百融金服(金融大資料) 4、國雙科技(營銷大資料) 5、國信優易(媒體大資料) 6、百分點(營銷大資料) 7、華院集團(解決方案) 8、個推(資料平臺) 9、奧維雲網(資料平臺)

資料解決方案--------讀寫分離

讀寫分離的本質是對資料庫進行叢集,這樣就可以在高併發的情況下將資料庫的操作分配到多個數據庫伺服器去處理從而降低單臺伺服器的壓力,不過由於資料庫的特殊性–每臺伺服器所儲存的資料都需要一致,所以資料同步就成了資料庫叢集中最核心的問題。如果多臺伺服器都可以寫資料同步將

高並發容量NoSQL解決方案探索

nosql sql mysql 大數據時代,企業對於DBA也提出更高的需求。同時,NoSQL作為近幾年新崛起的一門技術,也受到越來越多的關註。本文將基於個推SRA孟顯耀先生所負責的DBA工作,和大數據運維相關經驗,分享兩大方向內容:一、公司在KV存儲上的架構演進以及運維需要解決的問題;二、對NoS

容量NoSql解決方案:Aerospike實戰

技術 能夠 部署 結果 接口 碎片 數量 get family 個推專註為開發者們提供消息推送服務多年。通過個推SDK,手機終端與服務器建立長連接,維持在線狀態。然而在網絡異常等情況下,消息無法實時送達到終端用戶,因而推送服務器建立了一份離線消息列表,以待用戶重新登錄時,進

伺服器資料恢復通用方法/伺服器硬碟故障導致資料丟失解決方案

[伺服器資料恢復原因推斷] 伺服器資料丟失情況很多,通常無法明確伺服器資料丟失的原因,常見的丟失原因有:伺服器硬碟出現故障,管理員或者伺服器自動進行fsck操作,這一操作可能造成更加嚴重資料丟失或者導致伺服器資料恢復的難度增加。伺服器資料丟失後執行mkfs操作,若操作未完成則容易導致部分塊組全部

英特爾與區塊鏈:雲端計算平臺釋出新的資料保護解決方案

點選上方 “藍色字” 可關注我們! 暴走時評:位於法國里昂的去中心化算力平臺iExec釋出了端到端的可信執行環境。iExec的開發人員將這一技術描述為第一個面向企業的英特爾SGX可擴充套件解決方案,以實現基於區塊鏈計算中的

前端 SPA 單頁應用資料統計解決方案 (ReactJS / VueJS)

前端 SPA 單頁應用資料統計解決方案 (ReactJS / VueJS) 一、百度統計的程式碼: UV PV 統計方式可能存在問題 在 SPA 的前端專案中 資料統計,往往就是一個比較麻煩的事情,React 和 Vue 也是一樣。 在 發現問題之前,我們得來思考下 百度統計的 統計原理 是什麼?

python--(socket與粘包解決方案)

python--(socket與粘包解決方案) 一.socket: Socket 是任何一種計算機網路通訊中最基礎的內容。例如當你在瀏覽器位址列中輸入 http://www.cnblogs.com/ 時,你會開啟一個套接字,然後連線到 http://www.cnblogs.com/ 並讀取響應的頁面然

[轉]華為和他小夥伴們的九物聯網解決方案

這篇文章轉自物聯網智庫,http://www.iot101.com/news/2017-08-04/13482.html,文章中提供的九大解決方案的架構和功能集合是值得我們研究的部分 在平臺層中的“IoT連線管理平臺”,又被分成了兩層,分別是聯接管理和應用使能,平臺

域名到站點的負載均衡技術一覽(主要是探討一臺Nginx抵禦併發的解決方案)(轉)https://www.cnblogs.com/EasonJim/p/7823410.html

一、問題域 Nginx、LVS、Keepalived、F5、DNS輪詢,往往討論的是接入層的這樣幾個問題: 1)可用性:任何一臺機器掛了,服務受不受影響 2)擴充套件性:能否通過增加機器,擴充系統的效能 3)反向代理+負載均衡:請求是否均勻分攤到後端的操作單元執行 二、上面那些名詞都是什麼概念 1

串列埠接收時丟資料問題解決方案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

瀏覽器本地資料儲存解決方案以及cookie的坑

本地資料儲存解決方案以及cookie的坑 問題: cookie過長導致頁面開啟失敗 背景: 在公司的專案中有一個需求是開啟多個工單即在同一個頁面中打開了多個tab(iframe),但是需要在重新整理時只重新整理當前頁面仍然保留著多個iframe,現在重新整理有兩種方式,第一種是鍵盤中按F5或者ctrl

CDH 資料疑難解決一則

起因:  Hive查詢變慢 觀察: Cloudera Manager中某個Datanode報錯, Health Chart每隔幾分鐘有紅色不健康狀態 觀察日誌: 在 /data/log/hadoop-hdfs/hadoop-cmf-hdfs-DATANODE

MyCat分片-海量資料儲存解決方案

說到MyCat分片,首先我們要了解的是什麼是分片 簡單來說,就是指通過某種特定的條件,將我們存放在同一個資料庫中的資料分散存放到多個數據庫(主機)上面,以達到分散單臺裝置負載的效果。 資料的切分(Sharding)根據其切分規則的型別,可以分為兩種切分模式。 (1)一種是按照不同的表

解決 Eclipse 啟動卡在 Loading 畫面 不丟失資料解決方案

作業系統:Mac OS Sierra Eclipse版本:Version: Neon.1a Release (4.6.1)   開機卡在Loading 頁面,無響應 造成這種原因多半是因為上一次異常關閉Eclipse造成的   解決方案 1、不

MySQL刪除重複資料解決方案

對於重複的資料,有兩種情況: 1️⃣兩行資料完全相同 2️⃣某欄位相同 3️⃣id不同,其他欄位相同 第1️⃣種情況的解決方案: 思路: 1.查出表中所有行,不顯示重複行。 2.建立一張臨時表,儲存查到的新表資料。 3.刪除原表資料 4.把臨時表的資料插入到原表中。 5.刪除臨時

MySQL千萬級表優化解決方案

MySQL千萬級大表優化解決方案 非原創,純屬記錄一下。 背景 無意間看到了這篇文章,作者寫的很棒,於是乎,本人自私一把,把乾貨儲存下來。:-) 問題概述 使用阿里雲rds for MySQL資料庫(就是MySQL5.6版本),有個使用者上網記錄表6個月的資料量近2000萬,保留最近一年的資料量達到

Spark專案實戰-資料傾斜解決方案之原理以及現象分析

一、資料傾斜的原理 在執行shuffle操作的時候,大家都知道是按照key來進行values的資料的輸出、拉取和聚合的。同一個key的values,一定是分配到一個reduce task進行處理的。假設多個key對應的values,總共是90萬。但是問題是可能某個key對應

資料如何解決問題

未來幾年,全球資料量將呈指數級增長。據國際資料公司(IDC)統 計,全球資料總量預計2020年達到44ZB,中國資料量將達到8060EB,佔全球 資料總量的18%。 如今,大資料已成為一項業務上優先考慮的工作任務,因為它能夠對全球整合經濟時代的商務產生深遠的影響