LPD - получать данные всегда одинаковой длины
Я пишу виртуальный принтер, используя это существующее решение. У меня проблема с подкомандой получения данных.
+----+-------+----+------+----+
| 03 | Count | SP | Name | LF |
+----+-------+----+------+----+
Command code - 3
Operand 1 - Number of bytes in data file
Operand 2 - Name of data file
Всякий раз, когда я обрабатываю эту команду, размер файла данных - Count - всегда является каким-то странным большим числом - 125899906843000. Я застрял здесь и не могу выяснить, почему это происходит. Кто-нибудь знает, где должна быть проблема? Спасибо
РЕДАКТИРОВАТЬ:
Я нашел, где проблема. Вот ответ на мой собственный вопрос. Проблема в том, что Microsoft отправляет невероятно большое число, а не фактический размер файла в байтах. Есть два способа решения проблемы:
- Отредактируйте порт TCP/IP виртуального принтера и включите подсчет байтов LRP. Это заставляет Windows подсчитывать количество байтов в файле и отправлять это значение в подкоманду Получить файл данных.
- Измените RPM так, чтобы он обрабатывал ситуацию "файл неизвестной длины", получая все данные из запроса на отправку файла данных, пока клиент LPR не закроет соединение.