const
TIMEOUT=60000;
type
TRec=packed record //数据包格式
cmd: integer;
dat: array[0..100] of char;
end;
var
Stream: TWinSocketStream;
rec: TRec;
begin
if not tcp.Active then exit;
Stream:=TWinSocketStream.Create(tcp.Socket,TIMEOUT);
try
rec.cmd:=1;
Stream.Write(rec,SizeOf(rec));
if Stream.WaitForData(TIMEOUT) then begin
Stream.Read(rec,SizeOf(rec));
memoClt.Lines.Add(format('收到返回:[命令号=%1d,数据=%1s]',[rec.cmd,rec.dat]));
end;
finally
Stream.Free;
end;
TIMEOUT=60000;
type
TRec=packed record //数据包格式
cmd: integer;
dat: array[0..100] of char;
end;
var
Stream: TWinSocketStream;
rec: TRec;
begin
if not tcp.Active then exit;
Stream:=TWinSocketStream.Create(tcp.Socket,TIMEOUT);
try
rec.cmd:=1;
Stream.Write(rec,SizeOf(rec));
if Stream.WaitForData(TIMEOUT) then begin
Stream.Read(rec,SizeOf(rec));
memoClt.Lines.Add(format('收到返回:[命令号=%1d,数据=%1s]',[rec.cmd,rec.dat]));
end;
finally
Stream.Free;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;const timeout=60000;type Trec = packed record
cmd: integer;
dat: array[0..99] of char;
end; TForm1 = class(TForm)
Memo1: TMemo;
ServerSocket1: TServerSocket;
procedure FormCreate(Sender: TObject);
procedure ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
private
{ Private declarations }
public
{ Public declarations }
mstr: string;
procedure display;
end;
TMyThread = class(TserverClientThread)
public
rec: Trec;
skt: Tclientsocket;
constructor create(createsuspended: boolean;Asocket: TserverClientwinsocket;ip: string;port: integer);
destructor destroy; override;
procedure Clientexecute; override;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with ServerSocket1 do
begin
Port:=888;
ServerSocket1.ServerType:=stThreadBlocking;
open;
end;
end;
procedure TMyThread.Clientexecute;
var stream: Twinsocketstream;
s: string;begin
inherited;
while (not terminated) and Clientsocket.Connected do
begin
Stream:=TwinsocketStream.Create(Clientsocket, timeout);
fillchar(rec,sizeof(rec),0);
if Stream.WaitForData(timeout) then begin
stream.Read(rec,sizeof(rec));
Stream.Write(rec,sizeof(rec));
end;
stream.Free;
end;
end;
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
SocketThread:=TMyThread.create(false,Clientsocket,'192.168.0.77',888);
end;constructor TMyThread.create(createsuspended: boolean;
Asocket: TserverClientwinsocket; ip: string; port: integer);
var Stream: TwinsocketStream;
begin inherited Create(createsuspended,asocket);
FreeonTerminate:=True;
end;