我是这么做的: (是不是太烦了?)
procedure TForm1.Button1Click(Sender: TObject);
var
m,i:Integer;
find:Boolean;
mstr:String;
begin
try
m:=StrToInt(Edit1.Text);
except
ErrorShow('端口号非法!');
//ErrorShow 等价于 ShowMessage
exit;
end;
if Length(Edit2.Text)=0 then
begin
ErrorShow('端口号非法!');
exit;
end;
with ClientSocket1 do
begin
if Edit2.Text[1] in ['0'..'9'] then
begin
Host:='';
Address:=Edit2.Text;
end
else
begin
try
Host:=Edit2.Text;
except
ErrorShow('远程主机地址设置错误!');
exit;
end;
end;
try
Port:=m;
except
ErrorShow('端口号设置错误!');
exit;
end;
try
Open;
except
ErrorShow('无法打开Socket!');
exit;
end;
end;
end;
//错误捕获
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
case ErrorEvent of
eeConnect:
begin
TTYWrite('连接失败.');
//TTYWrite 等价于 ShowMessage
ClientSocket1.Close;
end;
eeSend: TTYWrite('发送失败.');
eeReceive: TTYWrite('接收失败.');
eeDisconnect: TTYWrite('断开错误.');
eeAccept: TTYWrite('接受失败.');
else
TTYWrite('不明的Socket错误!');
end;
ErrorCode:=0;
end;