瞬傳多筆資料的TCP封包(使用接收端處理) |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
這是最近在工作上遇到的問題,
找到方法和實驗之後,整理出來和各位分享~ 當遇到「發送端」狂送資料時,
因為TCP不會一筆資料一筆資料封包傳送,因為太快了,
TCP會先把全部的資料一起打包,做一個封包來傳送, 這會造成「接收端」收到一個大封包,
如果接放端不知道這是很多筆資料所包成的,
必會無法讀出封包的資料。 通常一般人會在「發送端」做手腳,
如: 加個Sleep(5)或是用Timer來讓資料無法連著送(雖然還是狂送), 但如果不能在「發送端」做手腳呢?? 像是我們是用自己的程式由TCP/IP去收別人程式傳過來的資料,
你能保證別人會幫你先做處理嗎? 所以我們就得在「接收端」另做處理,就是這個程式,
我由Client當「發送端」,由Server當「接收端」,
Client可以先把資料收集起來,放在Queue,
再用傳送,瞬間一次全部傳給Server(用迴路從Queue中一筆一筆狂丟)。 Server收到資料,不馬上處理,而是先放在一個buffer,
在buffer裡做緩衝和分析封包,看這封包是由幾個資料所構成的,
再一一讀出封包內的資料。 這是在client用queue,如果想試試更快的,可以寫個for迴圈,
一直猛sendbuf(),就可以知道Tcp/ip打包的方式了。 請各位前輩多多給些意見和指點
附加檔案:35262_Server.zip
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |