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

SOCKET傳收檔問題

答題得分者是:暗黑破壞神
迷幻御史
一般會員


發表:3
回覆:1
積分:0
註冊:2007-04-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-06 00:01:35 IP:122.126.xxx.xxx 訂閱
CLIENT端 傳送檔案
<textarea class="delphi" rows="10" cols="60" name="code">clientsockettrans->Host = serverhost->Text ; clientsockettrans->Active = true ; TMemoryStream *aaa = new TMemoryStream ; aaa->LoadFromFile("abc.txt") ; ftrans ftemp ; ftemp.TotalSize = aaa->Size ; lstrcpy(ftemp.filename , "abc.txt" ); ShowMessage(ftemp.filename); aaa->Read(ftemp.Data,ftemp.fsize) ; clientsockettrans->Socket->SendBuf(&ftemp,sizeof(ftrans)) ; </textarea>

SERVER端 接收檔案
<textarea class="delphi" rows="10" cols="60" name="code">TMemoryStream *bbb = NULL ; bbb = new TMemoryStream ; ftrans ftemp ; Socket->ReceiveBuf(&ftemp,sizeof(ftrans)) ; bbb->Size = ftemp.TotalSize ; ShowMessage(ftemp.filename) ; bbb->Write(ftemp.Data,ftemp.fsize) ; bbb->SaveToFile(ftemp.filename) ; </textarea>

兩個執行檔皆有相同STRUCT
<textarea class="delphi" rows="10" cols="60" name="code">typedef struct filetrans { char filename[1024]; DWORD fsize ; DWORD TotalSize ; BYTE Data[1024]; } ftrans; </textarea>

這樣的程式碼 它有傳輸的動作了...
但是收到的檔案...打開裡面卻是亂七八糟的內容...
請教是哪一部分的程式碼有問題??

//--------------------------------------------------------------
跟第一次發文的內容全不相同...已修改過...
編輯記錄
迷幻御史 重新編輯於 2007-05-06 04:40:52, 註解 無‧
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-06 00:34:37 IP:219.86.xxx.xxx 訂閱
可以參考底下範例:
Server : http://delphi.ktop.com.tw/board.php?cid=31&fid=77&tid=25913
Client: http://delphi.ktop.com.tw/board.php?cid=31&fid=77&tid=25912
多多利用搜尋可以找到很多解答喔~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-06 11:35:37 IP:218.170.xxx.xxx 未訂閱
你要 sendbuffer 之前,你確定 connect 已經”完成”了嗎?
它像是 nonbolock 的方式。所以你要在 event 中去找找
”已經連線”的 event 去做判別。
而不是一連串的寫下來。你這樣做。它當然會傳送不完整。
系統時間:2024-04-26 3:54:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!