نهاية؛
نهاية؛
cs.OnRead(Sender: TObject;Socket: TCustomWinSocket);
فار
درجة الحرارة: سلسلة؛
bufSend:pointer;
يبدأ
sRecv:=Socket.ReceiveText;
الحالة sRecv[1] من
MP_REFUSE:ShowMessage('خافت، سيتم رفضه!');
MP_ACCEPT: البدء
fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpen);
//iBYTEPERSEND ثابت، حجم الحزمة المرسلة في كل مرة.
Switch.SendText(MP_FILEPROPERTY+Trunc(fsSend.Size/iBYTEPERSEND)+1);
نهاية؛
MP_NEXTWILLBEDATA:البدء
المقبس.SendText(MP_NEXTWILLBEDATA);
نهاية؛
MP_DATA: البدء
يحاول
GetMem(bufSend,iBYTEPERSEND+1);
إذا (fsSend.Position+1+iBYTEPERSEND) <fsSend.Size ثم
يبدأ
fsSend.Read(bufSend^,iBYTEPERSEND);
//Socket.SendBuf(bufSend^,iBYTEPERSEND);
fsSend.Free;
end//إرسال عادي، الحجم iBYTEPERSEND
آخر تبدأ
fsSend.Read(bufSend^,fsSend.Size-fsSend.Position-1);
المقبس.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
end;// آخر مرة يتم فيها الإرسال، أرسل البيانات المتبقية
أخيراً
FreeMem(bufSend,iBYTEPERSEND+1);
النهاية؛ {من المحاولة}
نهاية؛
MP_ABORT: البدء
// ملغى :(
fsSend.Free;
نهاية؛
النهاية؛ {من الحالة}
نهاية؛
إجراءات التنظيم:
إضافة حكم الخطأ، وتحسين البرنامج، والجمع بين الخادم والعميل، وإضافة عرض تقدم الوقت المتبقي، وإتاحة نقل ملفات متعددة في وقت واحد، وإضافة وظيفة الدردشة، ويصبح نقلًا جيدًا للملفات من نقطة إلى نقطة برنامج.