客户端:
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字节,但下一次怎么传啊
要用循环吗?
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字节,但下一次怎么传啊
要用循环吗?
解决方案 »
- 大家如何添加明细表顺序号
- 请问TBytes 类型的变量 要引用哪个单元?
- 如何在一个字符串列表变量中提取其中的一个值出来?
- 在Delphi中如何调用发布在Tomcat上的Soap服务?
- ado连excel的独占问题,我的程序无法显示excel表了!!
- 我出100分,请帮我,问题不难,是我太笨
- 哪有Delphi 6 Update Pack 2免注册、免费下载?
- Intraweb开发问题 : Intraweb系统支持的系统怎样加入第二个窗口并可使用?
- 大家来说说看,是delphi5好,还是6好啊?
- 数据类型转换float?
- 一个奇怪的问题!
- 有关证券交易所数据读取,一分钟刷新几十次覆盖记录表(dbf),影响我读取数据吗?
主要用的api是copyfrom,ReadBuffer,Write,
老大能发送点代码吗?我好急啊都几天了还没有解决?感激不尽
[email protected]