菜鸟问题想请教,我的客户端将会写成DLL格式让别人调用,那么我create的IDTcpclient控件应该在什么时候销毁才可以避免内存泄漏呢?如果我在客户每一次查询服务器数据时的函数中建立控件(.create)和连接(.active),然后服务器处理完毕返回数据后立刻销毁(.free),这样会不会效率有问题,会不会导致其他的问题?在这个函数中是不是使用IDTcpclient控件的readln()就可以实现函数一直等到有返回结果客户才可以再做第二次查询(这是我想要的效果)?谢谢

解决方案 »

  1.   

    各位大虾请帮帮忙啊。help!!另外,所谓的一问一答式是怎么一回事?
    是不是一个idtcpclient.writeln()再跟一个readln()看查找到的资料说这样会导致一个问题:就是如果服务器端没有返回带'\n'的信息,则程序会处于假死状态,那么如何设置超时策略啊?
      

  2.   

    一次查询完之后,最好要释放。
    一问一答就是:
      A方         B方
    writeln----->readln
    readln<------writeln
    当然也可以连续问和答:
      A方         B方
    writeln----->readln
    writeln----->readln
    writeln----->readln
    writeln----->readln
    readln<------writeln
    readln<------writeln
    readln<------writeln
    readln<------writeln但是问和答必须一一对应。
    同时,你加个TIdAntiFreeze组件,就可以有效的防止阻塞和冻结。
      

  3.   

    最后在DLL中直接使用winsock来写客户端通讯,这样就容易解决了