程序一运行,先连一下服务器,再继续运行,怎么做?
程序刚启动时,用socket到服务器读一个字符串,紧接着关闭socket,然后根据返回的字符串来showmessage。
想把这些工作都在formcreate时完成,但实际不行啊。有时候还没读到字符串,formcreate就完了,
请教高手怎么做啊?详细一点,delphi的socket编程刚接触。
谢谢!
[解决办法]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
procedure FormCreate(Sender: TObject);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
iStatus : Integer;
sMessage: String;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
iStatus := -2; //连接出现错误
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
iStatus := -1; //连接断开
end;
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
sMessage := Socket.ReceiveText;
iStatus := 1; //已获取信息
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Host := '192.168.14.1 ';
ClientSocket1.Port := 8000;
try
iStatus := 0;
ClientSocket1.Open;
while iStatus = 0 do Application.ProcessMessages;
case iStatus of
-1 : ShowMessage ( '服务器主动断开连接 ');
-2 : ShowMessage ( '无法连接服务器 ');
1 : ShowMessage ( '从服务器接收到信息: ' + sMessage);
end;
except
ShowMessage ( '连接服务器失败! ');
end;
end;
end.