如何屏蔽这个错误提示框?(serversocket)(50分)

C

chenke

Unregistered / Unconfirmed
GUEST, unregistred user!
用CientSocket,ServerSocket作一个收发程序.
如果一方突然掉电,clientsoeket,Serversocket会提示
异步Socket错误,用Errorcode=0可把客户方的提示信息屏蔽掉,
但服务器方无法解决,
 
在捕获到ERROR以后用

raise Execption.Create('Error');

可以给出自己定义的信息,或
raise
begin
end;
用空句屏蔽掉!
 
详细一点,给个小例子.
 
例如TPowerSock里面有个Events:OnInvalicHost
里面加入
begin
raise Exception.Create('你想要提供的消息');
end;
 
用ServerSocet控件onClietnError
raise exception.create('error')不行,
另请教PowerTcp的License.
 
想个变通的方法:
试试断电的消息在
onClientError,onClientError,onClientDisconnect
能捕获的到吗?
PowerTcp我的DELPHI4没有啊?!

 
我在onClientError中用Errorcode=0可以呀,我以前做过,
还专门测试来着。
 
to 唐:截取不到
to huhuhu:
试过了,不行。你可以这么试:
1.运行Server
2.在Delphi中运行Client,连上Server,再选program reset,
看看会有什么发生。
 
我又试了一遍,可以呀。
我运行了两个Delphi一个调试server , 一个调试client。
我在client端选program reset后。server端进入了clienterror,
ErrorCode=10053 Connection is aborted due to timeout or other failure.
我的clienterror函数中只有两行:
ErrorCode := 0;
Socket.Disconnect( Socket.SocketHandle);
运行后未出任何提示。
祝你好运:)
 
我用Delphi3.0不行,而且也没有Disconnect这个方法.
 
我用Delphi3.0不行,而且也没有Disconnect这个方法.
 
不太可能吧?
我没有用过DELPHI3,但SERVER SOCKET控件应该是一样的
吧。另外,程序中Socket是ClientError传过来的参数,
类型为TCustomWinSocket类型的,就是当前出问题的那个
连接。如果没有Disconnect这个方法,那怎么断开某个连接?
你怎么不用DELPHI4?
 
Disconnect是保护方法,只能改用Close;
另,我喜欢用Delphi3,因为编译快而且代码小。
 
我也遇到过同样的问题. 我看了TCustomSocket的源码后知道, 你可以写一个
自己的出错处理过程, 用未公开的SetErrorProc设置了即可: (Socket单元)

function SetErrorProc(ErrorProc: TSocketErrorProc): TSocketErrorProc;

当然, 其他的错误还是需要通过 ErrorCode := 0来屏蔽.
 
我也遇到过同样的问题. 我看了TCustomSocket的源码后知道, 你可以写一个
自己的出错处理过程, 用未公开的SetErrorProc设置了即可:

function SetErrorProc(ErrorProc: TSocketErrorProc): TSocketErrorProc;

当然, 其他的错误还是需要通过 ErrorCode := 0来屏蔽.
 
我在写一个实时系统时,遇到这个问题,用以下方法解决的
1.OnErrorEvent可以捕获错误
2.修改源码取禁止产生异常

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部