1

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

4

1 回答 1

1

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

随着OperationContext你在实施时得到AttributeManager#write(WriteContext, List<WriteValue>)

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对象上的东西。

于 2018-02-26T13:35:06.140 回答