用Delphi編寫點對點傳檔案程式(2) (轉)

gugu99發表於2008-04-23
用Delphi編寫點對點傳檔案程式(2) (轉)[@more@]
用編寫點對點傳(2)



end;
end;

cs.OnRead(Sender: T;Socket: TCustomWinSocket);
var
sTemp:string;
bufSend:pointer;
begin
sRecv:=Socket.ReceiveText;
Case sRecv[1] of
MP_REFUSE:ShowMessage('Faint,be refused!');
MP_ACCEPT:begin
fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpen);
//iBYTEPERSEND是個常量,每次傳送包的大小。
Socket.SendText(MP_FILEPROPERTY+Trunc(fsSend.Size/iBYTEPERSEND)+1);
end;
MP_NEXTWILLBEDATA:begin
Socket.SendText(MP_NEXTWILLBEDATA);
end;
MP_DATA:begin
try
GetMem(bufSend,iBYTEPERSEND+1);
if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then
begin
fsSend.Read(bufSend^,iBYTEPERSEND);
Socket.Senuf(bufSend^,iBYTEPERSEND);
fsSend.Free;
end//普通的傳送,大小為iBYTEPERSEND
else begin
fsSend.Read(bufSend^,fsSend.Size-fsSend.Position-1);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
end;//最後一次傳送,傳送剩餘的資料
finally
FreeMem(bufSend,iBYTEPERSEND+1);
end;{of try}
end;
MP_ABORT:begin
//被取消了:(
fsSend.Free;
end;
end;{of case}
end;


整理程式:
  加入錯誤判斷,程式,把Server和Client聯合在一起,加入剩餘時間進度顯示,做成能一次傳多個檔案,加入功能,就成了一個很好的點對點傳檔案的程式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1002856/,如需轉載,請註明出處,否則將追究法律責任。

相關文章