Browser 服务器生成打印到离用户最近的打印机

Browser 服务器生成打印到离用户最近的打印机,browser,printing,saas,cups,Browser,Printing,Saas,Cups,我们有一个SAAS应用程序,其中报告和其他打印作业在我们的应用程序服务器上生成,然后发送到CUPS打印队列。队列通过IP打印到客户端站点的打印机;到目前为止一切正常 然而,我们对新客户有了新的要求。他们希望打印作业打印到离当前使用的工作站最近的打印机上。这是一组8个共享工作站,每个工作站附近有两台打印机:一台激光打印机和一台热敏标签打印机。打印机连接到网络,并有自己的IP地址。它们支持IP打印 由于用户进入一个工作站,所以只需选择一个开放的工作站。我们无法将打印机与用户绑定。我们如何识别工作站并

我们有一个SAAS应用程序,其中报告和其他打印作业在我们的应用程序服务器上生成,然后发送到CUPS打印队列。队列通过IP打印到客户端站点的打印机;到目前为止一切正常

然而,我们对新客户有了新的要求。他们希望打印作业打印到离当前使用的工作站最近的打印机上。这是一组8个共享工作站,每个工作站附近有两台打印机:一台激光打印机和一台热敏标签打印机。打印机连接到网络,并有自己的IP地址。它们支持IP打印

由于用户进入一个工作站,所以只需选择一个开放的工作站。我们无法将打印机与用户绑定。我们如何识别工作站并映射其附近的打印机。一旦我们对工作站进行了标识,就可以很容易地创建一个数据库表,将其存储在我们可以查询的打印机附近,但是我们如何对工作站进行标识呢


饼干?如果删除所有浏览器历史记录,会发生什么?其他想法?

也许我误解了这一点,但从我读到的内容来看,一旦你确定了工作站,你就可以建立附近打印机的静态地图了?如果是这样,为什么不使用工作站的IP作为标识符呢。从HTTP请求中读取它应该是直截了当的

至于一个更奇特的解决方案。如果您的网络设置相当正式,因为附近的打印机可能共享一个公用路由器/交换机,那么您可以跟踪从SAAS服务器到工作站(1)再到每个打印机(2)的路由。然后匹配(1)和(2)并找到与终端IP开关最近的打印机

假设工作站A和打印机A最接近交换机B,交换机B通过几跳连接到交换机C,这也是服务器连接的地方

(1) 应该是这样的:

Hop 1: Server IP 
Hop .....
Hop 2: Switch M
Hop .....
Hop n-1: Switch A
Hop m: Workstation A
(2)中的一个路由器应共享最后两个跃点

Hop n: Switch A
Hop m: Workstation A
因此,以m-n为最小数字的打印机为例

我当然会选择静态IP-to-printer解决方案,因为它很简单,但如果这不是一个选项,那么可能是后者。但这只有在网络设置足够大和正式的情况下才能实现


Alex

如何使用此技术使用JavaScript获取客户端的IP地址,然后将其发送回服务器:


然后,您可以将IP映射到NAT上的端口,并具有唯一的映射。他实际上描述了一个与您非常相似的问题。

无法获得工作站IP我们得到的只是外部地址,客户网络是NAT'ed。我们发现一个会话的端口是一致的,但无法将端口映射到活动的机器。有意义吗?哦,好吧,这改变了一切。我以为你在自己的局域网上。让我试试另一个答案:)