Useful excerpt from Gopher+ specification
==========================================

Data transfer - Basic
~~~~~~~~~~~~~~~~~~~~~~

Request:
 selector [TAB] "+" [CRLF]

Successful response (static response size):
 [+] response_size [CRLF] response_body

Successful response (dot mode):
 [+] "-1" [CRLF] response_body [CRLF] . [CRLF]

Successful response (plain)
 [+] "-2" [CRLF] response_body

Error response
 [-] error_code [CRLF] error_data [CRLF] "." [CRLF]

Error codes:
 -1 - Not available
 -2 - Server busy
 -3 - Moved/Redirect (data contains new location)

Data transfer - Advanced
~~~~~~~~~~~~~~~~~~~~~~~~~

Request specific representation
 selector [TAB] "+" representation [CRLF]
 selector [TAB] "+" representation [TAB] "0" [CRLF]

Request with data sent
 selector [TAB] "+" representation [TAB] "1" [CRLF] data_block

Datablock format (same as response)
 [+] data_size [CRLF] data_body
 [+] "-1" [CRLF] data_body [CRLF] . [CRLF]
 [+] "-2" [CRLF] data_body