0

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

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

由于用户进来只是选择一个开放的工作站。我们不能将打印机与用户联系起来。我们如何识别工作站并映射其附近的打印机。一旦我们标识了一个工作站,就很容易创建一个数据库表,将它存储在我们可以查询的打印机附近,但是我们如何标识工作站呢?

曲奇饼?如果他们删除所有浏览器历史记录会怎样?其他想法?

4

2 回答 2

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

因此,选择一台打印机,其中 mn 是最小的数字。

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

HTH 亚历克斯

于 2009-10-01T15:18:05.773 回答
0

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

http://www.gnucitizen.org/projects/javascript-address-info/

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

于 2009-10-01T20:37:03.100 回答