【问题标题】:Milo: get IP of clientMilo:获取客户端的IP
【发布时间】:2018-02-26 13:07:32
【问题描述】:

有没有办法在写入的上下文中获取客户端 IP? 我想获取写入 Milo-OPCUA-Server 的客户端的 IP,因此我可以根据客户端 IP 以不同方式处理这些写入(本地客户端应该能够直接在服务器上写入,而其他写入应该被转发到另一个服务器)

【问题讨论】:

    标签: opc-ua milo


    【解决方案1】:

    好的,现在这不是任何官方 API 的一部分,所以它几乎肯定会在未来中断,但是:

    在实现AttributeManager#write(WriteContext, List<WriteValue>) 时使用OperationContext

    context.getSession().ifPresent(session -> {
        UaStackServer stackServer = context.getServer().getServer();
    
        if (stackServer instanceof UaTcpStackServer) {
            ServerSecureChannel secureChannel = ((UaTcpStackServer) stackServer)
                .getSecureChannel(session.getSecureChannelId());
    
            Channel channel = secureChannel.attr(UaTcpStackServer.BoundChannelKey).get();
    
            SocketAddress remoteAddress = channel.remoteAddress();
        }
    });
    

    我必须添加一些官方 API 来执行此操作,可能是 Session 对象上挂着的东西。

    【讨论】:

    • 谢谢,我想现在就可以了。虽然如果你能把这个带到Session-Object 我会很棒
    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2014-10-06
    • 2019-01-14
    • 2012-03-31
    相关资源
    最近更新 更多