我程序中包含TIDHttp和TIDTcpServer两个控件,TIDHttp执行(get方式)完后释放,TIDTcpServer启动正常,客户端有链接上来,处理后将TIDTcpServer的active置false,然后再重新设active=true是,回报“cound not bind socket,address and port are already in use”的异常
如果程序去掉有关TIDHttp的代码,那就不会出现后面的问题,请问是什么原因啊
有关TIDHttp的代码如下:
    IdHTTP1   :=   TIDHttp.Create(nil);
    try
     httpstr := IdHTTP1.Get('http://'+url) ;
    except
  //    Showmessage('网络出错!');
    end;
    IdHTTP1.Free;

解决方案 »

  1.   

    在  IdHTTP1.Free; 前 先执行:    IdHTTP1.Disconnect;
      

  2.   

    试试将在 IdTcpServer.Active:= false; 后执行: IdTcpServer.Bindings.Add.CloseSocket;
      

  3.   

    IdTcpServer.Active:= false前,我会把所有idpeerthread的socket连接关闭的
    今天又发现一个奇怪的现象,同样编译好的程序,在家里执行不报错,拿到公司执行就报错,郁闷
      

  4.   

    还是没解决
    公司里是局域网,通过代理服务器上网
    家里是adsl
    就这个差别了
    程序中IdHTTP是连到外网,TIDTcpServer是和本机的客服端连接
    登录后IdHTTP就已经释放了,但在主程序执行时,通过奇虎360发现,仍然与代理服务器有tcp连接,感到器官的是IdHTTP是http连接,怎么会显示tcp连接?是360的错误?再说在主程序执行时,IdHTTP就已经释放了,怎会显示还有连接了?
    请高手指点
      

  5.   

    我觉得跟我前几天碰到的问题长的有点像..不知道这个行不行,在工具-调试器-语言异常-indy这个勾一下
      

  6.   

    关注
    我也时常遇到这个Socket Error # 10048 Address already in use. 的问题。