说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于ClientSocket错误捉

编辑:说三道四文库 发布时间:2018-04-26 02:13
HTML文档下载 WORD文档下载 PDF文档下载
ClientSocket.Active:=False;
ClientSocket.Host:='cccc';(不存在的名称)
ClientSocket.Port:='80';
ClientSocket.Open;

会有错误11001出现, 但是在OnError中无法扑捉
通过改SoktComp.pas的原代码,可以解决在OnError中的扑捉问题,
但是在运行
ClientSocket.Active:=False;
ClientSocket.Host:='pcb1';(存在的名称)
ClientSocket.Port:='80';
ClientSocket.Open;
时却出错10049, 再次运行才能连接
不知何故要运行两次才可以连接? 

在Lookup时Disconnect就会出现这种情况,如何解决呢?
也碰到过类似的问题
提供一点思路:
1.需要捕捉错误,可以自己写一个TSocketErrorProc类型的处理函数,然后用 
  ScktComp单元中的 SetErrorProc 注册。
  这样,严重错误的时候也由自己处理,Delphi就不会弹出对话框(关于这一点,可以通过
  分析源码知道);
2.连接两次才能连接的情况:
  可能实是Delphi中的一个逻辑错误造成的吧。
  对于这一点,我有过贴子,见:
  http://www.csdn.net/expert/topic/121/121071.shtm
  还有...一时找不到,在找找。


  function SetErrorProc(ErrorProc: ): TSocketErrorProc;
begin
  Result := SocketErrorProc;
  SocketErrorProc := ErrorProc;
end;
谢谢Musicwind(吾爱是Yaya!)
捕捉错误我已经通过修改原码解决了,但是怎么解决连接两次的问题?
请各位高手相助!!!
q请大家帮忙
高手来否?
我一般不用Host而用Address,从来没有类似问题。
看来是无法解决了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘