線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1344
推到 Plurk!
推到 Facebook!

請問一個傳檔程式的問題

尚未結案
sue690226
一般會員


發表:23
回覆:15
積分:7
註冊:2004-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-19 01:31:02 IP:59.104.xxx.xxx 未訂閱
各位好!今天我使用ClientSocket和ServerSsocket作連線傳檔的動作。 我使用版上分享的寫法如下: 不過這個程式在區域網路下測試相當完美。但是我拿回家中使用ADSL傳送檔案。檔案太大約超過㄰K就無法接收到。請問各位是什麼問題。謝謝祝平安 首先是傳送端: TMemoryStream *msFile=new TMemoryStream;    msFile->LoadFromFile("ECG.Eps");    MYPACK mp;    int i=0;    int block=(msFile->Size%MAX_DATASIZE==0)?       msFile->Size/MAX_DATASIZE: msFile->Size/MAX_DATASIZE+1;       for(i=0; iSize; mp.dwThisDataSize=((i 1)*MAX_DATASIZE>msFile->Size)? msFile->Size-i*MAX_DATASIZE: MAX_DATASIZE; msFile->Position=i*MAX_DATASIZE; msFile->Read(mp.pbThisData, mp.dwThisDataSize); ClientSocket1->Socket->SendBuf(&mp, sizeof(MYPACK)); Sleep(10); } delete msFile; 接收端: MYPACK mp; Socket->ReceiveBuf(&mp, sizeof(MYPACK)); AnsiString sz=(AnsiString)mp.szHeader; if(sz.SubString(1, 4)=="FILE") { if(sz=="FILE-START") { gmsFile->Size=mp.dwTotalDataSize; gmsFile->Position=0; } gmsFile->Write(mp.pbThisData, mp.dwThisDataSize); if(sz=="FILE-END") { gmsFile->Position=0; gmsFile->SaveToFile(mp.szFileName); gmsFile->Clear(); } }
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-19 01:52:30 IP:211.22.xxx.xxx 未訂閱
你用的是UDP型態的SOCKET,按照一般測試值只要傳送超過1.5K的資料包,對方可能就會漏失掉,因此使用這種SOCKET一次傳送的資料包不要超過1.5K,建議在1K以下,所以要分割適當的大小傳送。另外在區網內之所以不會漏失掉,是因為網路通信協定偵測到你所送的目的端是在同一MASK內所以採用廣播的方式傳送,因此資料沒有上述漏失的情形。 ----------------------------------------------- Creation is the fundation of promotion.
sue690226
一般會員


發表:23
回覆:15
積分:7
註冊:2004-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-19 02:24:00 IP:59.104.xxx.xxx 未訂閱
引言: 你用的是UDP型態的SOCKET,按照一般測試值只要傳送超過1.5K的資料包,對方可能就會漏失掉,因此使用這種SOCKET一次傳送的資料包不要超過1.5K,建議在1K以下,所以要分割適當的大小傳送。另外在區網內之所以不會漏失掉,是因為網路通信協定偵測到你所送的目的端是在同一MASK內所以採用廣播的方式傳送,因此資料沒有上述漏失的情形。 ----------------------------------------------- Creation is the fundation of promotion.
謝謝你的回答~請問為什麼是UDP呢?因為書上不是說這樣的寫法是TCP的傳送。??這是我不解的。在請問那最好最快的解決方法是什麼呢?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-19 18:19:40 IP:211.22.xxx.xxx 未訂閱
將被傳送的檔案逐批讀出,每次讀取送出的數量不要超過1k,一直讀->傳->讀->傳...到檔案讀完為止。 ----------------------------------------------- Creation is the fundation of promotion.
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-18 17:32:57 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-03 18:49:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!