我在一个动态库里动态创建了一个UdpServer和一个UdpClient,UdpClient可以正常发送数据,但是UdpServer却不能正常收到别的程序发来的数据,有时关闭整个程序的时候UdpServer会有反应。以上代码如果不写在DLL里能正常执行。请高手帮忙分析一下原因,谢谢了。

解决方案 »

  1.   

    关闭整个程序的时候UdpServer会有反应?
    你的以上代码呢?
      

  2.   

    以下是unit单元的代码,定义udpserver;
    unit UnitUdpServer;
    interface
    uses
      ShareMem,SysUtils,Classes,IdUDPServer,IdUDPClient,IdSocketHandle,IdUDPBase;
    var
      WHReceiveStr:string;  
    type
      MyControl=class(TIdUDPServer)
      public
        procedure MyUDPOnRead(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    end;
    type
      TMyClient=class(TIdUDPClient)
    end;
    implementation
    uses Unitudpclient;
    procedure MyControl.MyUDPOnRead(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    beginend;  //End of Procedure--MyUdpOnRead
    end.下面是在unitclient中调用UnitUdpServer中的MyUDPOnRead
     unit Unitudpclient;
    ...function SearchReadIP(RemoteIP:string):TModuData;
    var 
      CtrlServer:MyControl;
    begin
      CtrlServer:=MyControl.Create(nil);
      CtrlServer.
      CtrlServer.DefaultPort:=8800;
      CtrlServer.Active:=true;  CtrlServer.OnUDPRead:=CtrlServer.MyUDPOnRead;
    end;请问这样是不是有错误??