1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>AppSocket TCP/IP Protocol</title>
<meta name="GENERATOR" content=
"Modular DocBook HTML Stylesheet Version 1.71 ">
<link rel="HOME" title=" LPRng-HOWTO" href="index.htm">
<link rel="UP" title="Printer Communication and Protocols "
href="printercomm.htm">
<link rel="PREVIOUS" title="Socket API " href="socketapi.htm">
<link rel="NEXT" title="Network Print Server Boxes " href=
"secnetwork.htm">
</head>
<body class="SECT1" bgcolor="#FFFFFF" text="#000000" link=
"#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">LPRng-HOWTO: 1 Apr 2002
(For LPRng-3.8.10)</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href=
"socketapi.htm" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom">Chapter
11. Printer Communication and Protocols</td>
<td width="10%" align="right" valign="bottom"><a href=
"secnetwork.htm" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="LEFT" width="100%">
</div>
<div class="SECT1">
<h1 class="SECT1"><a name="APPSOCKET">11.4. AppSocket TCP/IP
Protocol</a></h1>
<p>The AppSocket interface is supported by Tektronix and some
other printer vendors. It is similar to the Socket API, with
a couple of significant differences.</p>
<ol type="1">
<li>
<p>The printer has two ports for network connections: a
TCP port 9100 for TCP/IP stream connections and a UDP
port for UDP packet connections.</p>
</li>
<li>
<p>When a 0 length UDP packet or a UDP packet containing
only <tt class="FILENAME">CR/LF</tt> is sent to UDP port
9101, the printer will return a packet to the sender
containing print status information. This information
indicates the printers current status (busy, idle,
printing) and any error conditions.</p>
</li>
<li>
<p>The format, reliability, and repeatability of the UDP
format and information is totally undocumented, and the
UPD port facility should be regarded as, at best, an
advisory function of the printer.</p>
</li>
<li>
<p>To send a job to the printer, a connection to TCP port
is made. This connection will be refused while the
printer is busy or has a connection to another host.</p>
</li>
<li>
<p>When the TCP connection is established, the
information to be printed can be sent over the TCP
connection. Bytes sent on this stream will be placed in
the input buffer of the Print Engine and processed.</p>
</li>
<li>
<p>An end of job (EOJ) sequence indication in the data
stream will cause the printer to terminate the
connection. This is different than the Socket API, where
the printer will keep the connection open. This means
that if the PostScript CTRL-D (end of job) character is
sent in a job, then the connection will be
terminated.</p>
</li>
<li>
<p>Some models of printers modify this behavior slightly
and will not terminate the connection, but will simply
ignore any data following the EOJ indication.</p>
</li>
<li>
<p>Some printers support bidirectional AppSocket
communication, and while the connection is open will
return error indications or status information.</p>
</li>
<li>
<p>Once all the data has been received and the job has
finished printing, the connection will be terminated by
the printer.</p>
</li>
</ol>
<br>
<br>
<p>The <b class="APPLICATION">ifhp</b> filter, one of the
helper programs for <b class="APPLICATION">LPRng</b>, is used
with <b class="APPLICATION">LPRng</b> to provide AppSocket
support. For details, please see the [<span class=
"CITATION">IFHP-HOWTO</span>] in the <a href=
"http://www.private/" target="_top"><b class=
"APPLICATION">ifhp</b> Distribution</a> and <a href=
"p450.htm">Tektronix P450 and Family</a> for details. The
following is a typical printcap entry for the AppSocket
protocol. The actual network connection to the printer is
made by the <b class="APPLICATION">ifhp</b> filter:</p>
<div class="INFORMALEXAMPLE">
<a name="AEN4910"></a>
<pre class="SCREEN">
lp:
# <b class=
"APPLICATION">LPRng</b> opens a dummy connection for consistency
:lp=/dev/null
# we pass the ifhp filter options indicating that the
# Tektronics printer will need the appsocket protocol
# and to use port 35 at 10.0.0.1 to make the connection
# The ifhp filter may open and close the connection several
# times during the file transfer in order to ensure that
# the printer handles the job correctly.
:ifhp=model=tek,appsocket,dev=10.0.0.1%35
:filter=/usr/local/libexec/filters/ifhp
</pre>
</div>
<br>
<br>
</div>
<div class="NAVFOOTER">
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a href=
"socketapi.htm" accesskey="P">Prev</a></td>
<td width="34%" align="center" valign="top"><a href=
"index.htm" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"><a href=
"secnetwork.htm" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Socket API</td>
<td width="34%" align="center" valign="top"><a href=
"printercomm.htm" accesskey="U">Up</a></td>
<td width="33%" align="right" valign="top">Network Print
Server Boxes</td>
</tr>
</table>
</div>
</body>
</html>
|