writeBytes(message)
writes the bytes to the output stream, but they aren't sent down the pipe until the stream is flushed. When you kill the app, the stream is closed, and before the stream gets closed it flushes itself.
I think if you add outToClient.flush()
after the outToClient.writeBytes(authMessage)
you'll be rockin'.