ソケットプログラムのみでプリンターを操作するにはどうすればよいですか。
cups、php を使用した IPP、windows で 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 応答のエコー中に、連結されたデータ「サーバーからの応答」も印刷されません。
どんな助けでも私を大いに助けます。