<p>这段代码(<a href="http://www.opensource.apple.com/source/python/python-3/python/Lib/telnetlib.py" rel="nofollow">http://www.opensource.apple.com/source/python/python-3/python/Lib/telnetlib.py</a>)似乎只是忽略了空字符。这真的是正确的行为吗?在</p>
<pre><code>def process_rawq(self):
"""Transfer from raw queue to cooked queue.
Set self.eof when connection is closed. Don't block unless in
the midst of an IAC sequence.
"""
buf = ''
try:
while self.rawq:
c = self.rawq_getchar()
if c == theNULL:
continue
:
:
</code></pre>
<p>然后由read_until调用进程_rawq</p>
^{pr2}$
<p>我还想接收空字符。在我的特殊情况下,它标志着多行消息的结束。在</p>
<p>所以答案似乎是,这是编写库代码时的预期行为。在</p>
<p>FWIW<a href="https://support.microsoft.com/en-us/kb/231866" rel="nofollow">https://support.microsoft.com/en-us/kb/231866</a>状态:</p>
<blockquote>
<p>Communication is established using TCP/IP and is based on a Network
Virtual Terminal (NVT). On the client, the Telnet program is
responsible for translating incoming NVT codes to codes understood by
the client's display device as well as for translating
client-generated keyboard codes into outgoing NVT codes.</p>
<p>The NVT uses 7-bit codes for characters. The display device, referred
to as a printer in the RFC, is only required to display the standard
printing ASCII characters represented by 7-bit codes and to recognize
and process certain control codes. The 7-bit characters are
transmitted as 8-bit bytes with the most significant bit set to zero.
An end-of-line is transmitted as a carriage return (CR) followed by a
line feed (LF). If you want to transmit an actual carriage return,
this is transmitted as a carriage return followed by a NUL (all bits
zero) character.</p>
</blockquote>
<p>以及</p>
<pre><code>Name Code Decimal Value
Function NULL NUL 0 No operation
</code></pre>