Tserversocket 傳輸文件的問題 |
尚未結案
|
flyfish_chs
一般會員 發表:1 回覆:0 積分:0 註冊:2005-01-05 發送簡訊給我 |
傳輸文件的問題
在線程處理過程裏面
Procedure TClientThread.ClientExecute;
執行以下的語句
GetMem(bufSend,ThreadSendStream.size); // ThreadSendStream是從一個jpg文件中得到的Tmemorystream流
try
ThreadSendStream.Read(bufSend^,ThreadSendStream.Size );
SendResult:=ClientSocket.SendBuf(bufSend^,ThreadSendStream.Size);
finally
FreeMem(bufSend,ThreadSendStream.Size);
end; Receivedata: array [0..3,0..1] of Longint //總體變數
在用戶端Tclientsocket的OnRead裏面
iLength:=Socket.ReceiveLength;
GetMem(bufRecv,iLength);
Socket.ReceiveBuf(bufRecv^,iLength);
try
Receivedata[0,0]:=ReceiveData[0,0] iLength;
ProgressBar.Max :=Receivedata[0,1]; // Receivedata[0,1]爲之前收到的伺服器傳輸文件的大小。文件大小在24K左右
ProgressBar.Position:=Receivedata[0,0];
StatusBar1.Panels[0].Text:='正在傳輸' Chanel1.Hint '圖像,已完成' Inttostr(Trunc((Receivedata[0,0] / Receivedata[0,1])*100)) '%';
Recstream[0].WriteBuffer(bufRecv^,iLength);//
if Receivedata[0,0]>=Receivedata[0,1] then
begin
Socket.SendText(MP_END); //完成傳輸
End;
Finally
freeMem(bufRecv,iLength);
end; 問題是,在局域網內傳輸的時候有的電腦是正常的,有的電腦接收到的資料包長度〉實際伺服器端發送的資料包長度。Receivedata[0,0]- Receivedata[0,1]〉0
但是在廣域網傳輸就沒有問題。而且同樣的一台電腦在局域網工作不正常。但在廣域網就沒有問題。
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |