TCP 多執行緒 同時傳送大量資料 解決辦法

2021-08-28 15:54:01 字數 837 閱讀 3439

向大家分享一下.呵呵 伺服器向多個終端傳輸大量資料。並且同時向他們傳送,採用安全的tcp方式。我採用的辦法是 首先向多個終端 建立socket陣列,建立多個執行緒 建立多個執行緒的目的不是要 每個執行緒向不同的終端傳送,而是每個執行緒傳送不同的資料,比如乙個1g的資料,我執行緒1取出他的100m內容第二個執行緒取出他的第二個100m內容。然後執行緒同步執行向終端陣列裡面傳送。大大的提高了速率.

伺服器端對資料進行分割,然後終端 繼續對應多個執行緒去接收這些發來的分割後的資料,然後再拼裝在一起。

tcp/ip詳解卷1值得看一下。

傳輸層:

對於udp協議來說,整個包的最大長度為65535,其中包頭長度是65535-20=65515;

對於tcp協議來說,整個包的最大長度是由最大傳輸大小(mss,maxitum segment size)決定,mss就是tcp資料報每次能夠傳

輸的最大資料分段。為了達到最佳的傳輸效能tcp協議在建立連線的時候通常要協商雙方的mss值,這個值tcp協議在實現的時候往往用mtu值代替(需

要減去ip資料報包頭的大小20bytes和tcp資料段的包頭20bytes)所以往往mss為1460。通訊雙方會根據雙方提供的mss值得最小值

確定為這次連線的最大mss值。

ip層:

對於ip協議來說,ip包的大小由mtu決定(ip資料報長度就是mtu-28(包頭長度)。 mtu值越大,封包就越大,理論上可增加傳送速率,但

mtu值又不能設得太大,因為封包太大,傳送時出現錯誤的機會大增。一般預設的設定,pppoe連線的最高mtu值是1492, 而乙太網

(ethernet)的最高mtu值則是1500,而在internet上,預設的mtu大小是576位元組

TCP通訊的時候,傳送大量資料會宕機

我在mfc裡面,用socket寫了乙個tcp通訊的程式,非同步套接字程式設計,註冊了fd read fd write fd connect fd close事件。在客戶端的主線程裡面又建立了兩個執行緒,乙個執行緒不斷的生成資料,另外乙個執行緒把生成的資料傳送出去,只要有資料生成就通過套接字傳送。程式...

封裝多執行緒處理大量資料操作(一)

起因 封裝多執行緒處理大量資料操作 二 最近在寫乙個導資料的程式,需要從幾個老資料表中取出n多的資料,然後加以處理再新增到新資料庫的對應表中。單步操作太慢了,這不正是多執行緒的用武之地嗎?對於每一種資料我都得寫一套類似的 表意 如下 從老資料庫中獲得一批老資料 dataset dsuser oldd...

EXCEL解析匯入,多執行緒批量插入大量資料

excel匯入基本分為3個步驟 1.上傳檔案 2.解析檔案 3.邏輯內容首先檢視是哪一步需要優化,一般需要在第3步,插入資料庫的邏輯優化。如果資料量比較大的話,單條sql執行很慢,幾條資料幾次和資料庫互動。影響執行效率。解決辦法 1.批量插入 2.多執行緒執行直接貼 專案例項 public resu...