конец;
конец;
cs.OnRead(Отправитель: TObject;Socket: TCustomWinSocket);
вар
сТемп: строка;
bufSend: указатель;
начинать
sRecv:=Socket.ReceiveText;
Случай sRecv[1] из
MP_REFUSE:ShowMessage('Упадешь в обморок, получи отказ!');
MP_ACCEPT: начало
fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpen);
//iBYTEPERSEND — константа, размер пакета, отправляемого каждый раз.
Socket.SendText(MP_FILEPROPERTY+Trunc(fsSend.Size/iBYTEPERSEND)+1);
конец;
MP_NEXTWILLBEDATA: начало
Socket.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);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
end;//Последний раз отправить, отправить оставшиеся данные
окончательно
FreeMem(bufSend,iBYTEPERSEND+1);
конец; {попробовать}
конец;
MP_ABORT:начать
//Отменено :(
fsSend.Free;
конец;
конец;{случай}
конец;
Организационная процедура:
Добавьте оценку ошибок, оптимизируйте программу, объедините сервер и клиент, добавьте отображение оставшегося времени, сделайте возможным передачу нескольких файлов одновременно и добавьте функцию чата, и это станет хорошей передачей файлов из одной точки в другую. программа.