The WriteLine method writes a line of text to the server
          and terminates the line with a carriage-return and linefeed
          control character sequence. Unlike the Write method which
          writes arbitrary bytes of data to the socket, this method is
          specifically designed to write a single line of text data from a
          string.
          If the Buffer string is terminated with a linefeed 
          (LF) or carriage return (CR) character, it will be automatically 
          converted to a standard CRLF end-of-line sequence. Because the string 
          will be sent with a terminating CRLF sequence, the number of 
          characters sent to the remote host will typically be larger than the original 
          string length (reflecting the additional CR and LF characters), unless 
          the string was already terminated with CRLF.
          The WriteLine method should only be used to send text,
          never binary data. In particular, the function will discard any data
          that follows a null character and will append linefeed and carriage return
          control characters to the data stream. Calling this this method will
          force the thread to block until the complete line of text has been
          written, the write operation times out or the server aborts the
          connection. If this function is called with the Blocking
          property set to False, it will automatically switch the socket into a
          blocking mode, send the data and then restore the socket to
          non-blocking mode. If another socket operation is attempted while the
          WriteLine method is blocked sending data to the server,
          an error will occur. It is recommended that this method only be used
          with blocking socket connections.
          The Write and WriteLine methods can be safely
          intermixed.