在DCOM中如何确定当前发送信息的客户端 (100分)

  • 主题发起人 主题发起人 hds6400
  • 开始时间 开始时间
H

hds6400

Unregistered / Unconfirmed
GUEST, unregistred user!
1。在COM中定义了方法SendText(Text:OleVariant),但本人现在不能确定当前是由哪个客户端发送的数据,当然可以把方法定义改为SendText(Text:OleVariant;StrIP:OleVariant),将客户端的IP地址也传送过去,请问可有别的方法来确定当前是由哪个客户端发送信息的,即只要客户端调用了方法SendText(Text:OleVariant)我就可以知道由哪台机器调用。
 
传送发送的计算机名或IP
 
to sthsm:我已经说过了不能传送发送的计算机名或IP地址
 
好多天了,怎么就没人回答呢
 
不可能不发送客户端的标示(IP或计算机名),除非你的服务器是有状态的,客户端登陆以后就一直保持客户端的信息,这样就可以知道.
 
to lvloj:我现在的服务器就是记录着客户端的信息,我定义了一个类,当客户端登录以后就将客户端的基本信息记录下来,但是当客户端向服务器发送数据时我还是不知道由哪台机器发送的,请问如何解决?
 
com 有 ConncetionPort 什么的对象,利用这个,在服务器维护连接的客户端信息就可以了.
......
 
to lvloj:我现在的服务器就是记录着客户端的信息,我定义了一个类,当客户端登录以后就将客户端的基本信息记录下来,但是当客户端向服务器发送数据时我还是不知道由哪台机器发送的,请问如何解决?
如果你使用的是Delphi的默认配置建立的RDM,那么RDM和客户端是一一对应的,一个客户端连接会建立一个RDM(或多个,这里我说的是发消息的那个RDM).
如果你的客户端信息是保存在RDM中,并且在客户端关闭以前决不关闭这个RDM,那么当客户端调用接口的时候,你自然会知道是那个客户端发送的,因为RDM和客户端是一一对应的.但我估计你的设计不是这样的,你的客户端信息是统一保存的,所以不知道是那个客户发送来的消息.RDM和客户端一一对应的服务是有状态的,也是不太好的一种设计,我还是建议你用发送客户标示的方法比较好.
 
多人接受答案了。
 
后退
顶部