unit GetInfoThread;interface
uses Classes,Messages, SysUtils,windows,StdCtrls,ShellApi,Controls,Unit1,ScktComp; type
ReadThread=class(TThread)
private
ClientSocket1: TClientSocket;
protected
procedure Execute; override;
public
Constructor Create(Socket1: TClientSocket);
end;
implementation{ ReadThread }constructor ReadThread.Create(Socket1: TClientSocket);
begin
ClientSocket1:=Socket1;
inherited Create(False);
end;procedure ReadThread.Execute;
var
sStream:TWinSocketStream;
sBuffer:array[0..9] of char ;
begin
While (ClientSocket1.Active) do
begin
try
sStream:=TWinSocketStream.Create(ClientSocket1.Socket,60000);
FillChar(sBuffer,10,0);
if sStream.WaitForData(60000) then
begin
sStream.Read(sBuffer,SizeOf(sBuffer));
Form1.Memo1.Lines.Add(sBuffer);
end
else
ClientSocket1.Close;
finally
sStream.Free;
end;
end;
end;
end.请问这个线程怎么接收不到ClientSocket.onRead()的信息.
以下是我的调用的方法:procedure TForm1.Button1Click(Sender: TObject);
var
SocketThread:ReadThread;
begintry
ClientSocket1.Port:=1234;
ClientSocket1.Address:='192.168.1.119';
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText('info:sfq:192.168.1.102'+#13);
SocketThread.Create(ClientSocket1);
except on E:Exception do
ShowMessage(E.Message);
end;
end;
uses Classes,Messages, SysUtils,windows,StdCtrls,ShellApi,Controls,Unit1,ScktComp; type
ReadThread=class(TThread)
private
ClientSocket1: TClientSocket;
protected
procedure Execute; override;
public
Constructor Create(Socket1: TClientSocket);
end;
implementation{ ReadThread }constructor ReadThread.Create(Socket1: TClientSocket);
begin
ClientSocket1:=Socket1;
inherited Create(False);
end;procedure ReadThread.Execute;
var
sStream:TWinSocketStream;
sBuffer:array[0..9] of char ;
begin
While (ClientSocket1.Active) do
begin
try
sStream:=TWinSocketStream.Create(ClientSocket1.Socket,60000);
FillChar(sBuffer,10,0);
if sStream.WaitForData(60000) then
begin
sStream.Read(sBuffer,SizeOf(sBuffer));
Form1.Memo1.Lines.Add(sBuffer);
end
else
ClientSocket1.Close;
finally
sStream.Free;
end;
end;
end;
end.请问这个线程怎么接收不到ClientSocket.onRead()的信息.
以下是我的调用的方法:procedure TForm1.Button1Click(Sender: TObject);
var
SocketThread:ReadThread;
begintry
ClientSocket1.Port:=1234;
ClientSocket1.Address:='192.168.1.119';
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText('info:sfq:192.168.1.102'+#13);
SocketThread.Create(ClientSocket1);
except on E:Exception do
ShowMessage(E.Message);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SocketThread:ReadThread;
begin try
ClientSocket1.Port:=1234;
ClientSocket1.Address:= '192.168.1.119 ';
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText( 'info:sfq:192.168.1.102 '+#13);
SocketThread.Create(ClientSocket1,true); //SocketThread.Create(ClientSocket1);
except on E:Exception do
ShowMessage(E.Message);
end;
end;
SocketThread.Create(ClientSocket1,false);
表示创建后直接运行
或者在后面加上SocketThread.Create(ClientSocket1);
SocketThread.resume;