- 註冊時間
- 2006-3-13
- 最後登錄
- 2025-1-10
- 在線時間
- 673 小時
- 閱讀權限
- 200
- 積分
- 417
- 帖子
- 1107
- 精華
- 0
- UID
- 2
  
|
利用 TWinSocketStream 可以做到
- var
- TServerWinSocket serverSocket;
- TClientWinSocket clientSocket;
- TFileStream inFile, outFile;
- // 假設各 Stream 都已 created
- // 在 Server 端
- // Client send 一個命令告知 Server 要由 536 bytes 開始傳
- inFile.Position := 536;
- wtih TWinSocketStream.Create(serverSocket, 60000) do
- begin
- CopyFrom(inFile, inFile.Size - inFile.Position + 1);
- Free;
- end;
- // 在 Client 端 OnReadEvent 中
- memStream = TMemoryStream.Create;
- memStream.Size = TOTAL_FILE_SIZE;
- memStream.Position := 0;
- socketStream := TWinSocketStream.Create(clientSocket, 60000) do
- if socketStream.WaitForData(60000) then // give the client 60 seconds writing
- socketStream.Read(PCharArray(memStream.Memory)^, TOTAL_FILE_SIZE)
- memStream.Position := 0;
- outFile.Position := 536;
- outFile.CopyFrom(memStream);
- // 释放全部的对象
複製代碼 |
|