首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

程序一运行,先连一下服务器,再继续运行,如何做

2012-02-22 
程序一运行,先连一下服务器,再继续运行,怎么做?程序刚启动时,用socket到服务器读一个字符串,紧接着关闭soc

程序一运行,先连一下服务器,再继续运行,怎么做?
程序刚启动时,用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.

热点排行