This file is indexed.

/usr/share/doc/lprng-doc/LPRng-Reference-Multipart/appsocket.htm is in lprng-doc 3.8.A~rc2-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
178
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">

  <title>AppSocket TCP/IP Protocol</title>
  <meta name="GENERATOR" content=
  "Modular DocBook HTML Stylesheet Version 1.79">
  <link rel="HOME" title=" LPRng Reference Manual" 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 Reference Manual: 24
        Sep 2004 (For LPRng-3.8.28)</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" id="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>

    <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="AEN4975" id="AEN4975"></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>
  </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>

  <p align="center"></p>
</body>
</html>