我遇到了一些與USocket庫真正令人費解的行爲。請考慮以下代碼片段:Usocket無符號字節8在字符元素類型不接收數據時
(defvar server-socket (usocket:socket-listen "localhost" 43593
:element-type
'(unsigned-byte 8)))
(defvar client-connection (usocket:socket-accept server-socket))
;in a separate terminal, type "telnet localhost 43593".
;then type some text and hit enter.
(listen (usocket:socket-stream client-connection))
=> NIL
爲什麼會發生這種情況?當我從usocket:socket-listen
的參數中刪除:element-type '(unsigned-byte 8)
時,它工作得很好。我可以理解,如果任何字節不能表示爲字符(utf-8編碼例如具有無效字節序列),但是不能用字節表示的反向字符 - 是沒有意義的,特別是在網絡中上下文。
(我在Lubuntu 15.10上運行clisp-2.49,USocket 0.6.3.2,以防萬一)。