如何从服务器获取我的 Corba 客户端的 IP 地址

Posted

技术标签:

【中文标题】如何从服务器获取我的 Corba 客户端的 IP 地址【英文标题】:How do I get the IP address of my Corba client from the sever 【发布时间】:2013-04-23 17:08:30 【问题描述】:

我有一个 c++ 客户端通过omniOrb 将Corba 消息发布到c# 服务器。我已经在服务器端注册了一个 PortableInterceptor 到 Orb 并且可以拦截消息。 在调试中,我在拦截中收到一条 ServerRequestInfo 消息,并且在调试监视窗口中可以看到一直到带有客户端 IP 的 RemoteEndPort。但是,其中许多类都有我无法在代码中访问的私有成员。

我该怎么做?

这是我的代码

// 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");
    
.
.

【问题讨论】:

如果你真的想知道是谁在发送请求,试试拦截器。 【参考方案1】:

在 CORBA 中没有访问该信息的标准方法。一些实现确实有一个自定义的方式来获取一些信息,例如 TAO 有一个你可以访问的传输当前对象。在使用 IIOP 收到呼叫的那一刻,您可以将其缩小到 IIOP 传输电流,它会为您提供该信息。看起来您需要 C# ORB 的扩展才能拥有类似的扩展

【讨论】:

以上是关于如何从服务器获取我的 Corba 客户端的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?

ASP.NET Core 3.1 - 如何获取客户端的 IP 地址?

如何在 servlet 中获取客户端的远程地址?

在运行时获取服务器上的 Corba 客户端活动

如何从负载均衡器后面获取客户端的 IP 地址?

如何在开发过程中获取客户端的ip呢?