程序中使用了ClientSocket控件,用来和服务端进行连接。主程序在程序初始化时赋给ClientSocket的属性host和port,然后建立连接。连接建立完成后,建立线程,线程中使用ClientSocket进行数据的收取和发送。如果在程序运行时发生断网,希望程序能自己尝试恢复连接。但是一直没有测试成功。现在将代码贴出来,请高手指正。
procedure TIntfaceServer.Execute;
var
sBuf: String;
SendText: String;
begin
{ Place thread code here }
FreeOnTerminate:=True ;
SendText:='*W11' + frmMain.ManageDepID + '|' + frmMain.RegisterCode + '^';
AddString(SendText);
while not Terminated do
begin
try
while not ClientSocket.Active do
begin
ClientSocket.Active :=True;
Sleep(100);
end;
if ClientSocket.Active then
begin
while(ClientSocket.Socket.ReceiveLength=0) do
begin
sleep(100);
end;
sBuf:=ClientSocket.Socket.ReceiveText;
fInfo:=sBuf;
WriteLog(2,fInfo);
if (fInfo<>'') then
begin
DisposeInfo;
end;
end;
except on e:exception do
WriteLog(3,e.Message);
end;
end;
end;
procedure TIntfaceServer.Execute;
var
sBuf: String;
SendText: String;
begin
{ Place thread code here }
FreeOnTerminate:=True ;
SendText:='*W11' + frmMain.ManageDepID + '|' + frmMain.RegisterCode + '^';
AddString(SendText);
while not Terminated do
begin
try
while not ClientSocket.Active do
begin
ClientSocket.Active :=True;
Sleep(100);
end;
if ClientSocket.Active then
begin
while(ClientSocket.Socket.ReceiveLength=0) do
begin
sleep(100);
end;
sBuf:=ClientSocket.Socket.ReceiveText;
fInfo:=sBuf;
WriteLog(2,fInfo);
if (fInfo<>'') then
begin
DisposeInfo;
end;
end;
except on e:exception do
WriteLog(3,e.Message);
end;
end;
end;
begin
Application.Proce.....//不记得怎么打了...
end;
procedure TIntfaceServer.Execute;
var
sBuf : String;
SendText: String;
begin
FreeOnTerminate:=True;
SendText:= "*W11 " + frmMain.ManageDepID + " | " + frmMain.RegisterCode + "^ ";
AddString(SendText);
while not Terminated do
begin
try
while ClientSocket.Active and (ClientSocket.Socket.ReceiveLength=0) do
begin
sleep(100);
end;
if ClientSocket.Active then
begin
sBuf:=ClientSocket.Socket.ReceiveText;
fInfo:=sBuf;
WriteLog(2,fInfo);
if fInfo < > " " then
begin
DisposeInfo;
end;
end
else begin
while not ClientSocket.Active do
begin
ClientSocket.Open;
Sleep(100);
end;
end;
except on e:exception do
WriteLog(3,e.Message);
end;
end;
end;