我们有一个SAAS应用程序,在我们的应用程序服务器上生成报告和其他打印作业,然后发送到CUPS打印队列。队列通过IP打印打印到客户端站点的打印机;到目前为止一切正常。
但是,我们对新客户提出了新要求。他们希望打印作业能够打印到最接近当前正在使用的工作站的打印机。这是一组8个共享工作站,每个工作站附近有两台打印机:激光打印机和热敏标签打印机。打印机连接到网络并拥有自己的IP地址。它们支持IP打印。
由于用户只是选择一个打开的工作站。我们无法将打印机绑定到用户。我们如何识别工作站并映射其附近的打印机。一旦我们识别工作站以创建一个数据库表,将其存储在我们可以查询的打印机附近,这很容易,但我们如何识别工作站?
曲奇?如果删除所有浏览器历史记录会发生什么?其他想法?
答案 0 :(得分:0)
也许我误解了这一点,但是一旦你确定了工作站,你就可以建立一个附近打印机的静态地图?如果是这样,为什么不使用工作站的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到打印机解决方案,因为它很简单,但如果不是一个选项,那么后者可能就是。但这只有在网络设置很大且足够正式时才会出现。
HTH 亚历
答案 1 :(得分:0)
如何使用此技术使用JavaScript获取客户端的IP地址,然后将其发送回服务器:
http://www.gnucitizen.org/projects/javascript-address-info/
然后,您可以将IP映射到NAT上的端口,并具有唯一的映射。他实际上向你描述了一个非常类似的问题。