怎样分块传送7m的数据用clientsocket,serversocket?
客户端:
Var
s : TWinSocketStream;
f : TFileStream;
begin
if not strlib.showdlg('真的要上传数据吗?') then exit;
if not cs1.Active then cs1.Active:=true;
s := TWinSocketStream.Create(Cs1.Socket, 60000);
f := TFileStream.Create('c:\casher2000.rar, fmShareDenyWrite);
Try//我用断点运行时发现f是空的
s.CopyFrom(f, 0);//出错提示:write error 64 指定的网络名不再可用
Finally
s.Free;
f.Free;
End;
服务端:
Procedure TClientThread.ClientExecute;
Var
ReceiveBuffer : Array[0..4095] Of Char;
SocketStream : TWinSocketStream;
BytesRead : Integer;
F : TFileStream;
Begin
While Not Terminated And ClientSocket.Connected Do
Begin
try
SocketStream := TWinSocketStream.Create(ClientSocket, 60000);
F := TFileStream.Create('d:\casher2000.rar', fmCreate);
try
FillChar(ReceiveBuffer, 10, 0);
If SocketStream.WaitForData(5000) Then//不懂
Repeat
BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer));
if BytesRead = 0 then
ClientSocket.Close
Else
F.WriteBuffer(ReceiveBuffer, BytesRead);
Until Not SocketStream.WaitForData(2000);
finally
SocketStream.Free;
ClientSocket.Close;
f.Free;
end;
except
end;
End;
End;
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
SocketThread := TClientThread.Create(False, ClientSocket);
end;
这是我东拼西凑来的代码
d:\casher2000.rar是空的,我规定一次传60000字节,但下一次怎么传啊
要用循环吗?