akhir;
akhir;
cs.OnRead(Pengirim: TObject;Socket: TCustomWinSocket);
var
suhu:string;
bufKirim:penunjuk;
mulai
sRecv:=Socket.ReceiveText;
Kasus sRecv[1] dari
MP_REFUSE:ShowMessage('Pingsan, ditolak!');
MP_ACCEPT:mulai
fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpen);
//iBYTEPERSEND adalah konstanta, ukuran paket yang dikirim setiap kali.
Socket.SendText(MP_FILEPROPERTY+Trunc(fsSend.Size/iBYTEPERSEND)+1);
akhir;
MP_NEXTWILLBEDATA:mulai
Socket.SendText(MP_NEXTWILLBEDATA);
akhir;
MP_DATA:mulai
mencoba
GetMem(bufSend,iBYTEPERSEND+1);
if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Ukuran lalu
mulai
fsSend.Baca(bufSend^,iBYTEPERSEND);
Socket.SendBuf(bufSend^,iBYTEPERSEND);
fsSend.Gratis;
end//Pengiriman biasa, ukurannya iBYTEPERSEND
yang lain dimulai
fsSend.Read(bufSend^,fsSend.Size-fsSend.Position-1);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
end;//Terakhir kali mengirim, kirim sisa data
Akhirnya
FreeMem(bufSend,iBYTEPERSEND+1);
akhir;{dari percobaan}
akhir;
MP_ABORT: mulai
//Dibatalkan :(
fsSend.Gratis;
akhir;
akhir;{kasus}
akhir;
Prosedur pengorganisasian:
Tambahkan penilaian kesalahan, optimalkan program, gabungkan Server dan Klien, tambahkan tampilan kemajuan waktu yang tersisa, memungkinkan untuk mentransfer banyak file sekaligus, dan menambahkan fungsi obrolan, dan itu menjadi transfer file point-to-point yang baik program.