C# 检查网络打印机上打印作业的用户名

C# 检查网络打印机上打印作业的用户名,c#,printing,snmp,C#,Printing,Snmp,我正在使用SNMPSharpNet从网络打印机接收陷阱,以检查它是哪种作业(即打印、复印、扫描等)。我希望能够获得将每个打印作业发送到网络打印机的人的用户名,但这只能通过我所读到的回调到打印机来完成 如何通过网络打印机接收有关打印作业的附加信息 我通过如下插座连接到应用程序中的打印机: 我收到的每个作业的OID为我提供打印作业的状态、打印作业的类型以及作业编号(如果有帮助)。有一种方法可以使用SNMP Walk,使用GetNext或GetBulk来接收打印机中与发送给它的打印作业相关联的用户

我正在使用
SNMPSharpNet
从网络打印机接收陷阱,以检查它是哪种作业(即打印、复印、扫描等)。我希望能够获得将每个打印作业发送到网络打印机的人的
用户名
,但这只能通过我所读到的
回调
到打印机来完成

  • 如何通过网络打印机接收有关打印作业的附加信息
我通过如下插座连接到应用程序中的打印机:
我收到的每个作业的OID为我提供打印作业的状态、打印作业的类型以及作业编号(如果有帮助)。

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

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

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

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);
}