TCPIP服务器端向客户端发送数据,为什么小弟我这报错
TCPIP服务器端向客户端发送数据,为什么我这报错?
代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdThread;
type
TForm1 = class(TForm)
mmo1: TMemo;
idtcpsrvr1: TIdTCPServer;
btn1: TButton;
btn2: TButton;
edt1: TEdit;
procedure btn1Click(Sender: TObject);
procedure idtcpsrvr1Execute(AThread: TIdPeerThread);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FThread : TIdPeerThread;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
idtcpsrvr1.Active := True;
end;
procedure TForm1.idtcpsrvr1Execute(AThread: TIdPeerThread);
var
str: string;
begin
try
AThread.Connection.CheckForDisconnect(True,True);
str:= AThread.Connection.ReadLn();
mmo1.Lines.Add(str);
if str<>'' then
AThread.Connection.WriteLn('服务器已经相应你的消息'+str);
finally
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
// cList: TList;
count: Integer;
str: string;
begin
str:= edt1.Text;
try
//cList := idtcpsrvr1.Threads.LockList;
// for count := 0 to cList.Count-1 do
// begin
FThread.Connection.Write(str); //每次程序执行到这里都报错。应该怎么写才可以???
finally
// idtcpsrvr1.Threads.UnlockList;
end;
end;
end.
------解决方案--------------------
應該是這樣
代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdThread;
type
TForm1 = class(TForm)
mmo1: TMemo;
idtcpsrvr1: TIdTCPServer;
btn1: TButton;
btn2: TButton;
edt1: TEdit;
procedure btn1Click(Sender: TObject);
procedure idtcpsrvr1Execute(AThread: TIdPeerThread);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FThread : TIdPeerThread;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
idtcpsrvr1.Active := True;
end;
procedure TForm1.idtcpsrvr1Execute(AThread: TIdPeerThread);
var
str: string;
begin
try
AThread.Connection.CheckForDisconnect(True,True);
str:= AThread.Connection.ReadLn();
mmo1.Lines.Add(str);
if str<>'' then
AThread.Connection.WriteLn('服务器已经相应你的消息'+str);
finally
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
// cList: TList;
count: Integer;
str: string;
begin
str:= edt1.Text;
try
//cList := idtcpsrvr1.Threads.LockList;
// for count := 0 to cList.Count-1 do
// begin
FThread.Connection.Write(str); //每次程序执行到这里都报错。应该怎么写才可以???
finally
// idtcpsrvr1.Threads.UnlockList;
end;
end;
end.
------解决方案--------------------
應該是這樣
- Delphi(Pascal) code
procedure TForm1.btn2Click(Sender: TObject); var cList: TList; count: Integer; str: string; begin str:= edt1.Text; try cList := idtcpsrvr1.Threads.LockList; for count := 0 to cList.Count-1 do begin FThread := cList[count];//關鍵... FThread.Connection.Write(str); end; finally idtcpsrvr1.Threads.UnlockList; end; end;