当前位置: 首页 > 知识库问答 >
问题:

用php套接字编程操作打印机

怀刚毅
2023-03-14

我如何只用socket程序操作打印机?< br >我尝试了cups、php的IPP和windows的printer_open函数< br >,但我担心的是不要依赖于Linux、windows等平台。< br >它应该独立于平台。

下面是创建套接字到打印机的代码。

代码未优化,但已成功打印文本
唯一的问题是我无法检查打印作业状态。

<?php
$host = "printer_ip";
$port    = 9100; //default listening port for printer
$message = "This text is going to print by printer";
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if(!$socket){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
   die("Could not create socket: [$errorcode] $errormsg\n");
}
// connect to server
$result = socket_connect($socket, $host, $port);  
if(!$result){
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not connect to server: [$errorcode] $errormsg\n");
}
// send string to server
$socket_wrt = socket_write($socket, $message, strlen($message));
if(!$socket_wrt){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not send data to server: [$errorcode] $errormsg\n");
}
// get server response
$result = socket_read($socket, 1024);
if(!$result){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not read server response: [$errorcode] $errormsg\n");
}
echo "Reply From Server:".$result;
// close socket
socket_close($socket);
?>

编辑:

$result = socket_read($socket, 1024);


由于打印机处于空闲状态,除了我之外,没有人在使用,这就是为什么在每个请求中,打印机都可以轻松打印
数据,而不会拒绝任何连接。
在回声socket_read响应时,连接数据“来自服务器的回复”也不会打印。
任何帮助都会帮我大忙。

共有1个答案

岳泉
2023-03-14

如果可以从 JetDirect(端口 9100)切换到标准 LPR,此方法可以为您提供帮助。http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html

最初来自:从PHP应用程序通过网络打印

 类似资料:
  • 我只是想在我的OSX上运行nginx上的php。 我的php-fpm.conf文件 我的www.conf文件 在我的nginx.conf文件我得到了这个: 每次我打我的服务器我得到这个错误: 2017/12/31 01:45:25[crit]1102#0:*2 connect()到unix:/var/run/php fpm。连接到上游时sock失败(38:非套接字上的套接字操作),客户端:::1,

  • 问题内容: 我正在使用Java套接字构建一个简单的客户端/服务器应用程序,并尝试使用ObjectOutputStream等。 我一直在这个URL http://java.sun.com/developer/technicalArticles/ALT/sockets上关注该教程,当它谈到通过套接字传输对象时,它从一半开始。 请参阅我为客户端提供的代码http://pastebin.com/m37e4

  • 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此。官方关于socket编程的文档地址为https://docs.python.org/2/library/socket.html,我承认我看起来都很费劲。 套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非

  • 什么是套接字? Socket是一种Berkeley UNIX机制,用于在不同进程之间创建虚拟双工连接。 随后将其移植到每个已知的OS上,使得能够跨越在不同OS软件上运行的地理位置的系统之间进行通信。 如果不是套接字,系统之间的大多数网络通信永远不会发生。 仔细看看; 网络上的典型计算机系统根据其上运行的各种应用程序接收和发送信息。 此信息被路由到系统,因为为其指定了唯一的IP地址。 在系统上,此信

  • This chapter looks at the basic techniques for network programming. It deals with host and service addressing, and then considers TCP and UDP. It shows how to build both servers and clients using the