2、应用2——与网络打印机通信
这里对应原书中的第21章,讲述开发了一个可以和网络打印机通信的程序,以及期间需要考虑的问题。具体请参见原文参考资料,这里只给出一些简单的说明。
(1)简介
这里,我们开发了一个可以和网络打印机通信的程序。这些打印机可以通过以太网连接到多台计算机上面,提供明文文件或者附笔(PostScript)文件。应用程序通常使用因特网打印协议(IPP)和这些打印机进行交,当然也有一些可选的通信协议。
我们将要讲述两个程序:一个是print spooler 守护进程,它给printer发送作业和提交打印作业的命令给spooler守护进程。print spooler需要用到许多功能(例如和提交作业的客户进程进行通信,和printer进行通信,读取文件,扫描目录等等),所以我们需要用到前面讲述的很多函数。例如,我们使用线程(11章和12章)来简化print spooler的设计,使用sockets(16章)进行调度打印文件的程序与print spooler之间的交互,以及print spooler和网络printer之间的交互。
(2)实现
本章具体内容,属于应用开发的范围了,这里不再进行讲述。具体参见参考资料。这里只给出一个简单的图形,描述这里开发的程序:
Printer spooling 的组成
+---------+ +------------+
| print |<------------>| printd |
| command | | printer |
+^------^-+ | spooler |<----
/ \ +^-----^-----+ \ queue of files to be printed
/ \ ------/ | \
/ \ / | +-v-----+ +-------+ +-------+
+---------+ +--------+ | | file1 |--->| file2 |--->| file3 |
| file to | | config | | +-------+ +-------+ +-------+
| print | | file | |
+---------+ +--------+ |
+-----v----+
| printer |
+----------+
(3)总结
这章对两个完整的程序进行了详细的讲述:print spooler守护进程,用于给网络printer发送打印作业;以及一个可以用来提交被打印的作业到spooling守护进程的命令。这样,我们可以看到之前章节中讲到的许多的内容的应用(例如线程,多I/O,文件I/O,套接字I/O,信号等)。
译者注
原文参考
参考: APUE2/ch21.html
网友评论