You seem to know things that we don't. Please share the reason with us so that we can understand. Is there any reference for the protocol you are trying to match?
Perhaps the client expects the x to be preceded by 0. It is conventional to precede hex values by 0x. Therefore maybe:
client.println("[P]0x00\0x02\0x06\0x0d\0x0e");
Is there a document for the client you can point us to? It seems odd to me that everything is specified in hex except for the [P]. What does the client send you? Is it in ASCII? Are you sure this is not a binary protocol?
You can't have a null character (\x00 or \0) in a string. You have to use .write() with "char *, int" arguments where the 'int' is the number of characters. I think this will work: client.write("[P]\x00\x02\x06\x0d\x0a", 8);
I don't know where they got 0x0E for LF (Linefeed). It's 0x0A. 0x0E is SO (Shift Out)