将文本文件直接发送到网络打印机

我有当前正在运行的代码,通过编写临时文件将原始数据发送到打印机,然后使用File.Copy()将其发送到打印机。 File.Copy()支持本地端口,如LPT1和共享打印机,如\\FRONTCOUNTER\LabelPrinter

但是,现在我正在尝试使用直接在网络上的打印机: 192.168.2.100 ,我无法弄清楚要使用的格式。

 File.Copy(filename, @"LPT1", true); // Works, on the FRONTCOUNTER computer File.Copy(filename, @"\\FRONTCOUNTER\LabelPrinter", true); // Works from any computer File.Copy(filename, @"\\192.168.2.100", true); // New printer, Does not work 

我知道可以从每台计算机上“添加打印机”,但我希望避免这种情况 – 上面的第二行代码可以自动从网络上的任何计算机上运行,​​无需配置。 我也知道可以P / Invoke windows打印假脱机程序,如果这是我唯一的选择,我可以接受它,但这比我想要的代码开销要多得多。

理想情况下,某人将拥有使File.Copy()工作的方法或类似的C#语句,它将接受网络IP。

您可以使用套接字并将数据直接发送到该IP地址。 应该与File.Copy几乎相同。 我只是试了一下,这很有效。

我刚发了一些文字,但这里是我用过的代码

 Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.NoDelay = true; IPAddress ip = IPAddress.Parse("192.168.192.6"); IPEndPoint ipep = new IPEndPoint(ip, 9100); clientSocket.Connect(ipep); byte[] fileBytes = File.ReadAllBytes("test.txt"); clientSocket.Send(fileBytes); clientSocket.Close();