如何从服务器获取Corba客户端的IP地址?
本文关键字:IP 地址 客户端 Corba 服务器 获取 | 更新日期: 2023-09-27 18:10:38
我有一个c++客户端通过omniOrb向c#服务器发布Corba消息。我在服务器端用Orb注册了PortableInterceptor,可以拦截消息。在调试中,我在拦截中得到一个ServerRequestInfo消息,在调试监视窗口中可以看到一直到RemoteEndPort与客户端的IP。然而,这些类中的许多都有私有成员,我无法在代码中访问这些成员。
我该怎么做?
我的代码
// register the OrbInitialiser here in some code
omg.org.CORBA.OrbServices orb = omg.org.CORBA.OrbServices.GetSingleton();
orb.RegisterPortableInterceptorInitalizer( new LT.Quantifi.BrokerOrbInitialiser());
orb.CompleteInterceptorRegistration();
// register the Inteceptor in the OrbInitialiser here
public class BrokerOrbInitialiser : omg.org.PortableInterceptor.ORBInitializer
{
public void post_init(ORBInitInfo info)
{
BrokerRequestInterceptor serverRequests = new BrokerRequestInterceptor();
info.add_server_request_interceptor(serverRequests);
}
}
// Inteceptor catches messages here
Public class BrokerRequestInterceptor : omg.org.PortableInterceptor.ServerRequestInterceptor
{
.
.
public void receive_request_service_contexts(ServerRequestInfo ri)
{
Console.WriteLine("I catch messages here");
}
.
.
}
在CORBA中没有访问该信息的标准方法。一些实现确实有一种自定义的方式来获取一些信息,例如,TAO有一个您可以访问的传输当前对象。在使用IIOP接收呼叫的那一刻,您可以将其缩小为IIOP传输电流,它可以为您提供该信息。看起来您需要为c# ORB提供一个类似的扩展