Socket 的异常处理(200分)

  • 主题发起人 主题发起人 hengry
  • 开始时间 开始时间
H

hengry

Unregistered / Unconfirmed
GUEST, unregistred user!
if ServerSocket1.Socket.ActiveConnections>0 then
for j:=1 to ServerSocket1.Socket.ActiveConnections do
ServerSocket1.Socket.Connections[j-1].SendBuf(DocuBuf,i);
我的程序(服务器端)当客户端频繁地连接断开时在执行上述语句时发生
“Windows socket Error:(10038) on API 'closesocket'"
望高手指点!!!!!!!!
 
在onerror中将code:=0,这样就什么异常也不会出现了,反正也是线路忙,出现这种情况
就干脆来一个messagedlg('服务器忙',……)行了吗?:-)
 
呵呵,你倒是干脆。 :)
 
try it: (or add a try )

if ServerSocket1.Socket.ActiveConnections>0 then
for j:=1 to ServerSocket1.Socket.ActiveConnections do
if ServerSocket1.Socket.Connections[j-1].Connected = true then //add by pqx
ServerSocket1.Socket.Connections[j-1].SendBuf(DocuBuf,i);

 
to qiaohj:我可能没说明白,我的意思是服务器段的程序有问题
to pqx:谢谢你的办法不错我要去试试
 
to pqx: 也不行好象是在发送的过程中对方断开就会出现ERROR,我加了TRY也不行;
errorcode:=0也不行:(
 
try
……
except
空过程;
end;
ok?
贴全部源代码出来,如果还不行
 
对Application.OnException加入自己的捕捉函数
or
client 断开前发个message给server,让server也关闭, 不知你在哪里写这段程序?
 
简单的讲,就是如何屏蔽掉发生异常时所弹出的窗口(关闭窗口后程序能继续走);
我试过try..except..和Errorcode:=0,都不行,不知道还有没有别的方法
 
TPubErrHandle = class(TObject)
public
procedure handException(Sender: TObject; E: Exception); //自己随便写,空函数也行
end;
在主form的create事件中加入
PubErrHandle := TPubErrHandle.Create ;
Application.OnException := PubErrHandle.handException;

 
接受答案了.
 
后退
顶部