如何仅使用套接字程序操作打印机。
当我在 windows 中尝试 cups、带 php 的 IPP 和 printer_open 函数时,
但我担心的是不依赖于 Linux、window 等平台。
它应该是平台独立的。
下面是为打印机创建套接字的代码。
代码未优化,但已成功打印文本。
唯一的问题是我无法检查打印作业状态。
<?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 响应的回显,但连接数据“来自服务器的回复”也不会打印。
任何帮助都会帮助我很多。