掉封包 |
答題得分者是:RaynorPao
|
Evo
一般會員 發表:6 回覆:9 積分:3 註冊:2003-11-24 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 各位好: 以下是前輩所提供的傳送檔案的程式 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25913 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25912 如果我今天從server傳100個大小都在100K以內的檔案到client端,client卻沒辦法將這100個檔案收齊,請問這是不是在傳送的過程中封包掉了?? 有什麼辦法可以解決嗎?? 謝謝各位。 Evo 你好: (1)會掉封包是正常的,因為 TSocketSocket/TClientSocket 並沒有幫你做很多 的事情,所以,如果你還是要用這兩個元件的話,就必須自己重新設計傳送 的封包 (資料結構),可以用來檢查是否掉封包的資料結構,如果接收端發現 掉封包的話,再通知傳送端再重新傳送一次,直到接收端搜集到所有的封包 之後,再組合成未被傳送之前的樣子 (2)或者利用 TIdTCPServer/TIdTCPClient 這兩個元件來做,這會是一個比較好 的選擇,因為有關切割封包的部分,都已經幫你做掉了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36068-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
Evo
一般會員 發表:6 回覆:9 積分:3 註冊:2003-11-24 發送簡訊給我 |
RaynorPao大哥,真是謝謝您,我在這有找到您提供的一些Indy的相關範例,不過我還是有一些問題,想請教您:
1.您給的範例好像是由client向server下達"SendMeFile"的要求,如果要將server端程式改成以下的方式可以嗎?我在測試的時候常出現"Can't open file"的錯誤訊息
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TIdPeerThread *AThread;
this->IdTCPServer1Execute(AThread);
} void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread)
{
TFileStream *fs=new TFileStream("24bit.bmp",fmOpenRead);
try
{
AThread->Connection->WriteStream(fs, true, true, 0);
}
__finally
{
delete fs;
}
}
2.如果改成由server端傳送檔案給client,也就是client是處於被動的狀態,那麼client接收檔案的程式應該寫在哪一個事件下呢??
3.如果要有多個client,那麼在程式方面,我應該從哪裡著手呢?? 以上的問題,請RaynorPao大哥或對這方面很了解的前輩,麻煩各位幫忙了…
謝謝 發表人 - evo 於 2004/04/08 00:02:32 發表人 - evo 於 2004/04/08 00:03:39
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |