满分:求INDY中的 TidTcp 控件对文件传输的操作。 我使用 Tidtcpclient 的 writestream 传输文件失败。对indy不是很了解,网络上也很少有比较详细的教程,期待达者赐教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 client:procedure TFormClient.btnTestClick(Sender: TObject);begin IdTCPClient1.SendCmd ('test'); ShowMessage (IdTCPClient1.LastCmdResult.TextCode + ' : ' + IdTCPClient1.LastCmdResult.Text.Text);end;procedure TFormClient.btnConnectClick(Sender: TObject);begin IdTCPClient1.Connect;end;procedure TFormClient.btnDisconnectClick(Sender: TObject);begin IdTCPClient1.Disconnect;end;procedure TFormClient.btnExecuteClick(Sender: TObject);begin IdTCPClient1.WriteLn('execute'); ShowMessage (IdTCPClient1.ReadLn);end;procedure TFormClient.btnGetFileClick(Sender: TObject);var stream: TStream;begin IdTCPClient1.WriteLn('getfile ' + HttpEncode (edFileName.Text)); stream := TMemoryStream.Create; try IdTCPClient1.ReadStream(stream); stream.Position := 0; Image1.Picture.Bitmap.LoadFromStream (stream); finally stream.Free; end;end; server:procedure TFormServer.IdTCPServer1TIdCommandHandler1Command( ASender: TIdCommand);begin ASender.Thread.Connection.Writeln ('This is a dynamic response');end;procedure TFormServer.FormCreate(Sender: TObject);begin IdTCPServer1.Active := True;end;procedure TFormServer.IdTCPServer1Connect(AThread: TIdPeerThread);begin lbLog.Items.Add ('Connected from: ' + AThread.Connection.Socket.Binding.PeerIP);end;procedure TFormServer.IdTCPServer1Disconnect(AThread: TIdPeerThread);begin lbLog.Items.Add ('Disconnected from: ' + AThread.Connection.Socket.Binding.PeerIP);end;procedure TFormServer.IdTCPServer1TIdCommandHandler2Command( ASender: TIdCommand);var filename: string; fstream: TFileStream;begin if Assigned (ASender.Params) then filename := HttpDecode (ASender.Params[0]); if not FileExists (filename) then begin ASender.Response.Text := 'File not found'; lbLog.Items.Add ('File not found: ' + filename); raise EIdTCPServerError.Create ('File not found: ' + filename); end else begin fstream := TFileStream.Create (filename, fmOpenRead); try ASender.Thread.Connection.WriteStream(fstream, True, True); // fStream.Size; lbLog.Items.Add ('File returned: ' + filename + ' (' + IntToStr (fStream.Size) + ')'); finally fstream.Free; end; end;end; BDE中的unprepare在ADO中有对应方法么? 怎样取出一条记录同时从数据库中删除它? 问题不难但很急,在线等,顶者皆有分 关于DBGrid的问题 如何安装控件包? 用ClientDataSet分批取数据维和无法NEXT下去? 元数据查询~是什么意思(小问题,只给10分:p) 关于ADO连接ORACLE的问题 ORA-00905: 缺少关键字 如何杀死线程 Delphi信息列表设计 如何用QuickReport实现对ListView内容的打印。就69分了,全给你! DELPHI网络数据库的问题,谢谢!
procedure TFormClient.btnTestClick(Sender: TObject);
begin
IdTCPClient1.SendCmd ('test');
ShowMessage (IdTCPClient1.LastCmdResult.TextCode + ' : ' +
IdTCPClient1.LastCmdResult.Text.Text);
end;procedure TFormClient.btnConnectClick(Sender: TObject);
begin
IdTCPClient1.Connect;
end;procedure TFormClient.btnDisconnectClick(Sender: TObject);
begin
IdTCPClient1.Disconnect;
end;procedure TFormClient.btnExecuteClick(Sender: TObject);
begin
IdTCPClient1.WriteLn('execute');
ShowMessage (IdTCPClient1.ReadLn);
end;procedure TFormClient.btnGetFileClick(Sender: TObject);
var
stream: TStream;
begin
IdTCPClient1.WriteLn('getfile ' + HttpEncode (edFileName.Text));
stream := TMemoryStream.Create;
try
IdTCPClient1.ReadStream(stream);
stream.Position := 0;
Image1.Picture.Bitmap.LoadFromStream (stream);
finally
stream.Free;
end;
end;
procedure TFormServer.IdTCPServer1TIdCommandHandler1Command(
ASender: TIdCommand);
begin
ASender.Thread.Connection.Writeln ('This is a dynamic response');
end;procedure TFormServer.FormCreate(Sender: TObject);
begin
IdTCPServer1.Active := True;
end;procedure TFormServer.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
lbLog.Items.Add ('Connected from: ' +
AThread.Connection.Socket.Binding.PeerIP);
end;procedure TFormServer.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
lbLog.Items.Add ('Disconnected from: ' +
AThread.Connection.Socket.Binding.PeerIP);
end;procedure TFormServer.IdTCPServer1TIdCommandHandler2Command(
ASender: TIdCommand);
var
filename: string;
fstream: TFileStream;
begin
if Assigned (ASender.Params) then
filename := HttpDecode (ASender.Params[0]);
if not FileExists (filename) then
begin
ASender.Response.Text := 'File not found';
lbLog.Items.Add ('File not found: ' + filename);
raise EIdTCPServerError.Create ('File not found: ' + filename);
end
else
begin
fstream := TFileStream.Create (filename, fmOpenRead);
try
ASender.Thread.Connection.WriteStream(fstream, True, True);
// fStream.Size;
lbLog.Items.Add ('File returned: ' + filename +
' (' + IntToStr (fStream.Size) + ')');
finally
fstream.Free;
end;
end;
end;