用socketconnection的三层数据库程序,加一个下载文件的功能?
搜索到http://topic.csdn.net/t/20060207/12/4543179.html
服务器端
procedure TFilePacket.ReadFile(const FileName: WideString; var Packet: OleVariant);
var
TempStream:TFileStream;
Param:OleVariant;
p:Pointer;
begin
TempStream:=TFileStream.Create(String(FileName),fmOpenRead);
try
Param:=VarArrayCreate([0,TempStream.Size-1],varByte);
p:=VarArrayLock(Param);
try
TempStream.Position:=0;
TempStream.Read(p^,TempStream.Size);
finally
VarArrayUnlock(Param);
end;
finally
TempStream.Free;
end;
Packet:=Param;
end; 客户端
function WriteFile(var Stream: OleVariant;
const FileName: WideString): SYSINT;
var
OutStream:TFileStream;
p:Pointer;
begin
Result:=-1;
p:=VarArrayLock(Stream);
OutStream:=TFileStream.Create(String(FileName),fmCreate);
try
OutStream.Write(p^,VarArrayHighBound(Stream,1)+1);
finally
VarArrayUnlock(Stream);
OutStream.Free;
end;
Result:=0;
end; 客户端调用
procedure TForm1.Button2Click(Sender: TObject);
var
Param:OleVariant;
begin
SocketConnection1.AppServer.ReadFile('e:\360safe.exe',param);
if WriteFile(param,'e:\360safe.exe')=0 then
application.MessageBox('成功','成功',MB_OK)
end;发现文件10M以下还能正常运行,超过10M显示error reading from socket.怎样解决?
搜索到http://topic.csdn.net/t/20060207/12/4543179.html
服务器端
procedure TFilePacket.ReadFile(const FileName: WideString; var Packet: OleVariant);
var
TempStream:TFileStream;
Param:OleVariant;
p:Pointer;
begin
TempStream:=TFileStream.Create(String(FileName),fmOpenRead);
try
Param:=VarArrayCreate([0,TempStream.Size-1],varByte);
p:=VarArrayLock(Param);
try
TempStream.Position:=0;
TempStream.Read(p^,TempStream.Size);
finally
VarArrayUnlock(Param);
end;
finally
TempStream.Free;
end;
Packet:=Param;
end; 客户端
function WriteFile(var Stream: OleVariant;
const FileName: WideString): SYSINT;
var
OutStream:TFileStream;
p:Pointer;
begin
Result:=-1;
p:=VarArrayLock(Stream);
OutStream:=TFileStream.Create(String(FileName),fmCreate);
try
OutStream.Write(p^,VarArrayHighBound(Stream,1)+1);
finally
VarArrayUnlock(Stream);
OutStream.Free;
end;
Result:=0;
end; 客户端调用
procedure TForm1.Button2Click(Sender: TObject);
var
Param:OleVariant;
begin
SocketConnection1.AppServer.ReadFile('e:\360safe.exe',param);
if WriteFile(param,'e:\360safe.exe')=0 then
application.MessageBox('成功','成功',MB_OK)
end;发现文件10M以下还能正常运行,超过10M显示error reading from socket.怎样解决?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货