小弟刚刚接触Delphi开发分布式应用程序,但是总是在连接远程服务端发生问题,请各位高手指点迷津.
  
  最初使用DCOM技术连接远程服务器,步骤如下:
  
  1.建立一个Server工程 选择File/New/Other/Multiter/Remote Data Model  建立一个远程的数据模块.
  2.在接下来的向导中[CoClass Name]设置成: [SvrTst],其他的参数不变.
  3.在模块中加入[ADOConnection]/[ADOTable]/[DataSetProvider]
  4.设置好它们三者的关系后,运行一次.  5.再建立一个Client程序 
  6.在Client的窗口上添加[DCOMConnection]/[ClientDataSet]/[DataSource]
  7.将[DCOMConnection]的[ComputerName]属性置空,然后下拉[ServerName]列表找到刚刚注册的[Server]端.这时候[ServerGuid]属性会自动赋值.
  8.将[ClientDataSet]的[RemoteServer]属性设成[DCOMConnection]然后把[ProviderName]属性设置成为[Server]端的[DataSetProvider]
  9.把[DataSource]的[DataSet]属性设置成为[ClientDataSet1]
  10.我又添加了一个[DBGrid]控件它的[DataSource]属性设置成为Client工程[DataSource1]
  运行[Client]的时候[Server]端自动被唤醒,没有问题,数据可以从[Server]端获取.
 
  基于以上的设置,我想把[Server]端拿到远程机器上,测试[Client]连接[Server]端的情况.
  [Server]端拿到远程机器上后,我又运行了一下[Server]端.
  在本地,我把[Client]上的[DCOMConnection1]的[ComputerName]属性设置成[Server]所在机器的网络ID,但是我把[DCOMConnection1]的[Connected]属性设置成[True]时候,提示我[RPC服务器不可用],但是当我把[Computer]Name]设置成自己就没有错误,另外,我把[ServerName]设置成[Server]端的IP地址则提示[类没有注册] 请各位高手指点一下,我还有什么地方没有设置或者什么地方设置错误?不胜感觉!
  另: 两台机器的操作系统都是Win98 配置如下:  Client->IP: 192.168.0.1
  Clinet->Name: tht
  Clinet->网络ID :438-1  Server->IP: 192.168.0.2
  Clinet->Name: tht
  Clinet->网络ID : 438-2

解决方案 »

  1.   

    在服务器端运行DCOMCNFG程序,设置COM组件的属性
      

  2.   

    一定能搞定,建议你不要用dcomconnection
      

  3.   

    能否详细说一下ScoketConnetion配置的细节?
      

  4.   

    在服务器端用delphi打开服务器端的项目文件,选择菜单run/install com+ object
      

  5.   

    两台机都装上DELPHI
    应该就没问题了吗?
      

  6.   

    基本上跟dcom一样的,只是你的服务器端必须运行delphi带的scoketserver应用,在delphi/bin目录下
    还有要注意端口
      

  7.   

    ScoketConnetion最好用!而且现在都非常重视安全问题,ScoketConnetion能满足要求,DCOM要求人家开放这个开放那个的,别人的系统管理员会很不耐烦的。
      

  8.   

    刚才说了大堆,竟然全没有传上来,气死我了!请问DCOM好用还是COM+好用?
    答:其实他们不是一个概念!
    dcom是可以由远程客户端调用的com对象
    com+是执行在微软com+环境中的com/dcom对象,因为com+环境而具有 object poolin,database pooling以及事务控制等等企业应用必备的元素。具体你可以看看李维的ado/mts/com+一书!