在网络上找到距离客户端最近的打印机

时间:2016-04-11 20:43:43

标签: c# asp.net printing client zebra-printers

我正在开发一个从文本文件加载一组打印机的应用程序:

 protected void LoadPrinterList()
    {

        string CSVFilePathName = System.Configuration.ConfigurationManager.AppSettings["FilePath"];
        string[] Lines = File.ReadAllLines(CSVFilePathName);
        string[] Fields;
        Fields = Lines[0].Split(new char[] { ',' });
        int Cols = Fields.GetLength(0);
        DataTable dt = new DataTable();
        //1st row must be column names; force lower case to ensure matching later on.
        for (int i = 0; i < Cols; i++)
            dt.Columns.Add(Fields[i].ToLower(), typeof(string));
        dt.Columns.Add("nameanddescription", typeof(string), "name +'-'+ description");
        dt.Columns.Add("ipandconnectionstring", typeof(string), "ip +'-'+ ConncetionStringID");
        DataRow Row;
        for (int i = 1; i < Lines.GetLength(0); i++)
        {
            Fields = Lines[i].Split(new char[] { ',' });
            Row = dt.NewRow();
            for (int f = 0; f < Cols; f++)
                Row[f] = Fields[f];
            dt.Rows.Add(Row);
        }

        string hostname = Request.UserHostName.Substring(0, 3);
        string[] name = Printerlist.SelectedValue.Split('-');
        //string plant = name[0].ToString();
        //string plantvalue = plant.Substring(0, 3);
        //if(hostname == plantvalue)
        //{
        Printerlist.DataTextField = "nameanddescription";
        Printerlist.DataValueField = "ipandconnectionstring";
        //}
        Printerlist.DataSource = dt;
        Printerlist.DataBind();


    }

问题是大多数这些打印机都在工厂里,我需要找到最接近客户的标签打印机,我能够获得客户信息:

public static string DetermineCompName(string IP)
    {
        IPAddress myIP = IPAddress.Parse(IP);
        IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
        List<string> compName = GetIPHost.HostName.ToString().Split('.').ToList();
        return compName.First();
    }

string IP = Request.UserHostName;
string compName = CompNameHelper.DetermineCompName(IP);

我也有每台打印机的IP地址,因为我使用IP地址打印。我的问题是如何基于客户端的IP和打印机的IP找到最接近的IP?

还有其他替代方法吗?我在网上看了很多但却找不到足够的信息。

1 个答案:

答案 0 :(得分:0)

在公司网络中,交换机可能会被设备为将设备与具有已知位置的端口相关联。我已经支持了几十个网络,从未见过你所要求的细节。理论上你可以,如果网络支持可以保持更新的记录,哪些交换机端口进入什么墙端口。通常,打印机只能位于某个级别的几个位置,并且每个级别都有一个子网。许多网络都在暗示他们的姓名或描述位置。

或者,如果这不只是白天做梦而你确实需要它,我会看一个单独的位置感知系统,如rfid资产跟踪,甚至只是让所有打印机都使用wifi。企业wifi阵列可以估算设备位置(我知道Xirrus可以做到这一点,它对最近的打印机运行良好)。编辑:然后要获取设备的位置,您在wifi阵列上使用SNMP查询。