為什麼我用indy的IdTCPClient接收數據時,程序沒反應呢??(使用的是s:=self.IdTCPClient1.ReadLn();) 各位大俠, 為什麼我用indy的IdTCPClient接收數據時,程序沒反應呢?? (使用的是s:=self.IdTCPClient1.ReadLn();) 謝謝!@ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该要首先保证连接正常。第二要有server给他发sendln吧! unit Main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls;type TfrmMain = class(TForm) TCPClient: TIdTCPClient; Edit1: TEdit; Button1: TButton; Button2: TButton; OpenDialog: TOpenDialog; Button3: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.Button1Click(Sender: TObject);var sFile: String; MyFStream: TFileStream;begin if not TCPClient.Connected then TCPClient.Connect; if Trim(Edit1.Text) = '' then Edit1.Text := 'No Message'; //先发一句话 TCPClient.WriteLn(Edit1.Text); //再发文件 sFile := 'D:\Temp.txt'; Memo1.Lines.SaveToFile(sFile); TCPClient.OpenWriteBuffer; MyFStream := TFileStream.Create(sFile, fmOpenRead); try TCPClient.WriteStream(MyFStream); finally MyFStream.Free; end; TCPClient.CloseWriteBuffer; TCPClient.Disconnect;end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);begin if TCPClient.Connected then TCPClient.Disconnect;end;procedure TfrmMain.Button2Click(Sender: TObject);var MyFStream: TFileStream; sFile:string;begin OpenDialog.Filter := '*.txt|*.txt'; if not OpenDialog.Execute then Exit; sFile := OpenDialog.FileName; TCPClient.Connect; //TCPClient.WriteLn('PUT '+ExtractFileName(sFile)); //showmessage(TCPClient.ReadLnWait); TCPClient.OpenWriteBuffer; MyFStream := TFileStream.Create(sFile, fmOpenRead); try TCPClient.WriteStream(MyFStream); finally MyFStream.Free; end;//try.. TCPClient.closeWriteBuffer; //showmessage(TCPClient.ReadLnWait); TCPClient.Disconnect;end;procedure TfrmMain.Button3Click(Sender: TObject);begin TCPClient.Disconnect;end;end. unit Main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;type TfrmMain = class(TForm) TCPServer: TIdTCPServer; meoInfo: TMemo; meoConnections: TMemo; meoFileCon: TMemo; procedure TCPServerExecute(AThread: TIdPeerThread); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmMain: TfrmMain;implementationuses IdTCPConnection, IdSocketHandle;{$R *.dfm}procedure TfrmMain.TCPServerExecute(AThread: TIdPeerThread);var MyFStream: TFileStream; sFileName: String;begin //先读一句话 meoInfo.Lines.Add(AThread.Connection.ReadLn); meoInfo.Lines.Add('ReadLn OK'); //在读文件流 sFileName := 'D:\111.txt'; AThread.Connection.OpenWriteBuffer; MyFStream := TFileStream.Create(sFileName, fmCreate); try AThread.Connection.ReadStream(MyFStream, -1, True); meoInfo.Lines.Add('ReadStream OK'); finally MyFStream.Free; end; AThread.Connection.CloseWriteBuffer;end;procedure TfrmMain.FormCreate(Sender: TObject);begin TCPServer.Active := True;end;procedure TfrmMain.FormDestroy(Sender: TObject);begin TCPServer.Active := False;end;end. server端可能并没有给你发送信息,而client端等待接收server端发送的信息,导致死机状设置tcpclient的接收超时时间,可以解决你的问题 这样的sql命令怎么写?或是这样的功能怎么完成? 请教Tstringlist.append 乱码问题? 在動態SQL語句產生的adodataset中,如果有money字段需要貨幣形式顯示,應該怎樣做? Web服务器程序怎么不能生成DLL文件 delphi中异库数据记录如何互相导数? Delphi下如何用代码建立ACCESS数据库?如何打包? 如何在SQL Server的触发器中取得当前运行的SQL? 请教:关于TStream的问题 急! 一个关于函数的问题 如何在TreeView失去焦点时,让其所选的Node保持与其他的Node不同的区分颜色 一个用sql语句插入值的问题 求助
第二要有server给他发sendln吧!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
StdCtrls;type
TfrmMain = class(TForm)
TCPClient: TIdTCPClient;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
OpenDialog: TOpenDialog;
Button3: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.Button1Click(Sender: TObject);
var
sFile: String;
MyFStream: TFileStream;
begin
if not TCPClient.Connected then TCPClient.Connect;
if Trim(Edit1.Text) = '' then Edit1.Text := 'No Message';
//先发一句话
TCPClient.WriteLn(Edit1.Text); //再发文件
sFile := 'D:\Temp.txt';
Memo1.Lines.SaveToFile(sFile);
TCPClient.OpenWriteBuffer;
MyFStream := TFileStream.Create(sFile, fmOpenRead);
try
TCPClient.WriteStream(MyFStream);
finally
MyFStream.Free;
end;
TCPClient.CloseWriteBuffer;
TCPClient.Disconnect;
end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if TCPClient.Connected then TCPClient.Disconnect;
end;procedure TfrmMain.Button2Click(Sender: TObject);
var
MyFStream: TFileStream;
sFile:string;
begin
OpenDialog.Filter := '*.txt|*.txt';
if not OpenDialog.Execute then Exit;
sFile := OpenDialog.FileName;
TCPClient.Connect;
//TCPClient.WriteLn('PUT '+ExtractFileName(sFile));
//showmessage(TCPClient.ReadLnWait);
TCPClient.OpenWriteBuffer;
MyFStream := TFileStream.Create(sFile, fmOpenRead);
try
TCPClient.WriteStream(MyFStream);
finally
MyFStream.Free;
end;//try..
TCPClient.closeWriteBuffer;
//showmessage(TCPClient.ReadLnWait);
TCPClient.Disconnect;
end;procedure TfrmMain.Button3Click(Sender: TObject);
begin
TCPClient.Disconnect;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;type
TfrmMain = class(TForm)
TCPServer: TIdTCPServer;
meoInfo: TMemo;
meoConnections: TMemo;
meoFileCon: TMemo;
procedure TCPServerExecute(AThread: TIdPeerThread);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementationuses IdTCPConnection, IdSocketHandle;{$R *.dfm}procedure TfrmMain.TCPServerExecute(AThread: TIdPeerThread);
var
MyFStream: TFileStream;
sFileName: String;
begin
//先读一句话
meoInfo.Lines.Add(AThread.Connection.ReadLn);
meoInfo.Lines.Add('ReadLn OK'); //在读文件流
sFileName := 'D:\111.txt';
AThread.Connection.OpenWriteBuffer;
MyFStream := TFileStream.Create(sFileName, fmCreate);
try
AThread.Connection.ReadStream(MyFStream, -1, True);
meoInfo.Lines.Add('ReadStream OK');
finally
MyFStream.Free;
end;
AThread.Connection.CloseWriteBuffer;
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
TCPServer.Active := True;
end;procedure TfrmMain.FormDestroy(Sender: TObject);
begin
TCPServer.Active := False;
end;end.