끝;
끝;
cs.OnRead(보내기: TObject;소켓: TCustomWinSocket);
var
s온도:문자열;
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);
if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then
시작하다
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;
끝;
끝;{사건의}
끝;
조직 절차:
오류 판단 추가, 프로그램 최적화, 서버와 클라이언트 결합, 남은 시간 진행 표시 추가, 한 번에 여러 파일 전송 가능하게 하고, 채팅 기능 추가 등 좋은 포인트 투 포인트 파일 전송이 됩니다. 프로그램.