【问题标题】:Check username of print job on network printer检查网络打印机上打印作业的用户名
【发布时间】:2025-11-25 07:12:09
【问题描述】:

我正在使用SNMPSharpNet 接收来自网络打印机的陷阱,以检查它是什么类型的作业(即打印、复印、扫描等)。我希望能够获得将每个打印作业发送到网络打印机的人的username,但这只能通过我阅读的内容通过callback 发送到打印机来完成。

  • 如何通过网络打印机接收有关打印作业的附加信息?

我正在通过这样的套接字连接到应用程序中的打印机:

Socket socket = new Socket(SocketType.Dgram, ProtocolType.Udp);

string myIP;
IPEndPoint end;
EndPoint ep;
try
{
    myIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList[3].ToString();
    end = new IPEndPoint(IPAddress.Parse(myIP), 162);
    ep = (EndPoint)end;
    socket.Bind(ep);
}
catch (Exception e)
{
    Console.WriteLine("Exception: " + e.Message);
}

我收到的每个作业的 OID 会告诉我打印作业的状态、打印作业的类型以及作业编号(如果有帮助的话)。

【问题讨论】:

    标签: c# printing snmp


    【解决方案1】:

    有一种方法可以使用 SNMP Walk,使用 GetNext 或 GetBulk 来接收打印机中与发送给它的打印作业相关的用户名。漫游中使用的 OID 因所使用的打印机和与之关联的 MIB 而异。例如:

    我使用的是 Xerox 打印机,用于接收用户名的 OID 是: 1.3.6.1.4.1.253.8.51.5.1.1.4

    这仅适用于 Xerox 打印机,因为 253 是 Xerox 关联路径

    【讨论】:

      最近更新 更多