終わり;
終わり;
cs.OnRead(送信者: TObject;ソケット: TCustomWinSocket);
変数
sTemp:文字列;
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;
終わり;
終了;{ケースの}
終わり;
編成手順:
エラー判定の追加、プログラムの最適化、サーバーとクライアントの組み合わせ、残り時間経過表示の追加、複数ファイルの一括転送可能、チャット機能の追加など、ポイントツーポイントのファイル転送に適したものになります。プログラム。