【问题标题】:Server generated printing printing to printer closest to user服务器生成打印到离用户最近的打印机
【发布时间】:2009-10-01 13:27:37
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: browser printing saas cups


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      也许我误解了这一点,但是从我读到的内容中,一旦您确定了工作站,您就可以构建附近打印机的静态地图?如果是这样,为什么不使用工作站的 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 亚历克斯

      【讨论】:

      • 无法获取工作站 IP 我们得到的只是外部地址,客户网络是 NAT'ed。我们发现会话的端口是一致的,但是无法将端口映射到活动的机器。有意义吗?
      • 哦,好吧,这改变了一切。我以为你在自己的局域网上。让我试试另一个答案:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2018-02-28
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      相关资源
      最近更新 更多