unit Sys_Logins;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  Windows, ActiveX, Classes, ComObj, DfErpServer_TLB, StdVcl;type
  TLoginAccess = class(TTypedComObject, ILogin)
  protected
    {Declare ILogin methods here}
  end;implementationuses ComServ;initialization
  TTypedComObjectFactory.Create(ComServer, TLoginAccess, Class_LoginAccess,
    ciMultiInstance, tmApartment);end.如何在客户端获取激活TLoginAccess对象?要求能象SocketConnection那样激活远程Com对象.
即使用TCP/IP协议传输,可用于外部网.

解决方案 »

  1.   

    不知这篇文章对你有没有什么用
    http://dev.21tx.com/2005/06/18/11039.html
      

  2.   

    谢谢你的提议,但这篇文章写的是DCom,我要的是Socket的连接效果,
    刚刚看了下SocketConnection的代码,
    是通过一个TDataBlockInterpreter对数据收发进行解释.
      

  3.   

    是啊 有没有什么好的方法哦?
    我用的是Remote Data Module做了个中间层,当然是用的socket连接
    将系统中的TADOQuery改为了TClientDataSet,但是有的功能就不正常了,还出现“Error Reading From Socket”,郁闷死了
    有没有什么好的资料或是方法啊? 帮忙解决下啊~
      

  4.   

    我们知道Com对象可以这样创建引入单元 ComObjCreateComObj(GUID) //创建本地Com对象 
    CreateRemoteComObj(MachineName, GUID)  //创建远程Com对象 MachineName 机器名,指远程机器的机器名这两种方法都不能满足我的需求,我想要的是能够像SocketConnection那样能够指定端口, 通过使用TCP通讯,
    因为我的服务器需要放置到外网,但我不想使用Mids的模式,我只想使用ScktSrvr.exe来通讯,应该如何做呢?我看过SocketConnection的通讯方式,比如获取服务列表,它是使用Socket传送流实现,但是我看不到它在哪获取COM对象,即我想知道的是ScktSrvr客户端该如何获取COM对象,获取后的COM对象调用又是如何通讯?
      

  5.   

    SocketConnection只支持接口的迟绑定,也就是dispinterface
    所以中间层服务器必须支持Automation
    SocketConnection是自己用Socket实现的代理和存根,代理是SocketConnection实现的,存根是ScktSrvr.exe实现的
    可以说TDataDispatch是SocketConnection的代理,接口的所有调用都通过Invoke来实现,TDataDispatch在Invoke中使用TDataBlockInterpreter将参数列集,并使用IDataBlock传输,IDataBlock实际又调用ITransport来发送数据。
      

  6.   

    lake_cx 说的够详细,没错就是这样,结帖吧