我们有一个SAAS应用程序,其中在应用服务器上生成报告和其他打印作业,然后将其发送到CUPS打印队列。队列通过IP打印打印到客户端站点的打印机;到目前为止,一切工作正常。
然而,我们对新客户有了新的要求。他们希望打印作业打印到最靠近当前使用的工作站的打印机。这些是一组8个共享工作站,每个工作站附近有两台打印机:一台激光打印机和一台热敏标签打印机。打印机连接到网络,并具有自己的IP地址。它们支持IP打印。
因为用户进来时只是选择了一个开放的工作站。我们不能把打印机和用户联系起来。我们如何识别工作站并映射其附近的打印机。一旦我们标识了一个工作站,就可以创建一个数据库表,将其存储在我们可以查询的打印机附近,这很容易,但是我们如何标识这个工作站呢?
饼干?如果他们删除了所有浏览器历史记录,会发生什么?其他想法?
发布于 2009-10-01 20:37:03
如何使用此技术通过JavaScript获取客户端的IP地址,然后将其发送回服务器:
http://www.gnucitizen.org/projects/javascript-address-info/
然后,您可以将IP映射到NAT上的端口,并具有唯一的映射。他实际上描述了一个与你非常相似的问题。
发布于 2009-10-01 15:18:06
也许我误解了这一点,但根据我所读到的,一旦你识别出工作站,你就可以建立附近打印机的静态地图?如果是,为什么不使用工作站的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 Alex
https://stackoverflow.com/questions/1503962
复制相似问题