2009-10-01 153 views
0

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

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

由于用户进来只是选择一个开放的工作站。我们不能将打印机绑定到用户。我们如何识别工作站并映射附近的打印机。一旦我们找到一台工作站来创建一个数据库表,并将它存储在我们可以查询的打印机附近,但是我们如何识别工作站,这很容易:

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

回答

0

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

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

然后,您可以映射IP到端口在NAT上并且具有独特的映射。他实际上向你描述了一个非常类似的问题。

0

也许我误解了这一点,但是一旦您识别出工作站,您就可以在附近建立打印机的静态地图。如果是这样,为什么不使用工作站的IP作为标识符。应该直接从HTTP请求中读取它。

至于有点更奇特的解决方案。如果您的网络设置相当正式,因为附近的那些打印机可能共享一个通用路由器/交换机,则可以跟踪从SAAS服务器到工作站(1)的路由,然后到每台打印机(2)。然后将(1)和(2)匹配起来,找到那些最接近最终IP的开关应该给你最近的打印机。

所以我们说一个工作站和打印机的一个最接近它们连接到开关,在几跳连接到交换机C,并且也是在您的服务器连接B中。

(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 亚历

+0

无法获得工作站IP我们所得到的只是外部地址,客户网络已经NAT了。我们发现端口对于会话是一致的,但是没有办法将端口映射到活动的机器。合理? – 2009-10-01 18:21:15

+0

噢好吧,这改变了一切。我虽然你在自己的局域网上。让我试试另一个答案:) – 2009-10-01 20:36:03