求救,用 ClientSocket1 和 ServerSocket1 做了一个简单的聊天工具(10分)

  • 主题发起人 主题发起人 applezone
  • 开始时间 开始时间
A

applezone

Unregistered / Unconfirmed
GUEST, unregistred user!
我用 ClientSocket1 和 ServerSocket1 做了一个简单的聊天工具

在客户端写如下代码:
clientsocket1.Active:=false;
clientsocket1.Address:='192.168.0.1';
clientsocket1.Port:='4999';
try
clientsocket1.Active:=true;
except
clientsocket1.Active:=true;
application.MessageBox('不能连接服务器!','错误',mb_ok)
end;

当我把服务器端的 ServerSocket1.Active:=true;时,客户端可以连接到服务器端,

可是我把服务器端的 ServerSocket1.Active:=false;时,客户端尝试连接到服务器端时都
会出现错误,错误提示是:Asynchronous socket error 10061
我已经用了
try

except
end;//

为什么错误提示还会出现啊??
有没有什么办法把这个错误提示给屏蔽掉啊??

请大虾指教,我确实没分了,只给10分,问题解决了一定加法,谢谢!!
 
在窗体加上一个TApplicationEvents
然后在ONException事件中写下面代码
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
if E is ESocketError then
begin
//在这里写你的处理代码
end
else
ShowMessage(E.Message);
end;
 
谢谢Tassadar,问题已经解决了。可我还是想知道的更具体一点,能不能详细解剖一下

if E is ESocketError then //E是指什么,它具体怎么用
begin
//在这里写你的处理代码
end
else
ShowMessage(E.Message);
我看了delphi的帮助,好象是有出错就会调用到这里。我要这么做让不同的出错情况对应不同的
解决方法。
谢谢,10分已经加上去了,很不好意思,我确实是没分了。
 
谢谢Tassadar,问题已经解决了。可我还是想知道的更具体一点,能不能详细解剖一下

if E is ESocketError then //E是指什么,它具体怎么用
begin
//在这里写你的处理代码
end
else
ShowMessage(E.Message);
我看了delphi的帮助,好象是有出错就会调用到这里。我要怎么做
让不同的出错情况调用不同的解决方法。
谢谢,10分已经加上去了,很不好意思,我确实是没分了。
 
E就是一个Exception的子类
在Delphi里面没发生错误都会抛出一个错误
然后你会在application的OnException事件里面接收到这个对象
你也可以自己抛出错误,
比如,raise Exception.Create('error message');
不过最好用自己写一个Exception的子类来处理自己的错误
然后再application的OnException事件里面处理
 
你虽然使用了try...except...语句,但是在except之后,又赋值
clientsocket1.Active:=true;
应为
clientsocket1.Active:=false;
相当于没有写try...except...语句。
 
后退
顶部