TClientSocket的一个Bug(100分)

  • 主题发起人 主题发起人 codearts
  • 开始时间 开始时间
C

codearts

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientSocket1.Active := false;
ClientSocket1.Host := '1234567-不存在的机器名';
ClientSokcet1.Port := 54321;
ClientSocket1.Active := true;

在ClientSocket1的OnError事件写入:
ErrorCode := 0;
ShowMessage('not connected');

结果第一次执行的时候执行到了OnError事件里,但是第二次执行就出现了异常。
详见:
http://expert.csdn.net/Expert/topic/2031/2031715.xml?temp=.2941706
 
是吗?我的怎么没事?
每次都显示“错误”,不显示异常!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active := false;
ClientSocket1.Host := Edit1.Text;
ClientSocket1.Port := 54321;
ClientSocket1.Active := true;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
ShowMessage('错误!');
end;

end.
 
Borland SokcetServer的默认port是211,你必须在服务器端启动Scktsrvr.exe,然后调整
监听端口到54321.
 
to独帅

Edit.Text你设成什么了?必须为一个本LAN中没有的机器名?
TClientSocket的属性必须都接受默认值
 
Edit.Text随便设成什么都一样,不会显示异常
我的配置:
WinXP Professional + SP1
Delphi6(Build 6.240) + Update Pack 2
 
在IDE下要出异常的,在非IDE下就是好的,这是DELPHI调式程序的常识
 
我在IDE下也没有出过异常
 
在IDE下TClientSocket连接服务器失败,会出异常,除非你修改DEBUG设置。
 
张无忌,说得对啊,执行 exe文件就没有事了。
 
多人接受答案了。
 
后退
顶部