TCP Client-Server communications
Efficiency / logic

In the while loop in the client class,
you recreate a DataOutputStream and a BufferedReader from the socket in every single iteration.
This is just silly.
It would be better to create these objects before the loop.

Closing resources

You didn't close any of the resources you open.
As of Java 7,
an easy way to properly close everything is using the try-with-resources idiom,
for example:

try (
    Socket connectionSocket = input.accept();
    BufferedReader iptFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
    DataOutputStream optToClient = new DataOutputStream(connectionSocket.getOutputStream())
) {
    String TCPclientMess = iptFromClient.readLine();
    System.out.println("You Sent: " + TCPclientMess);
    String returnMess = TCPclientMess;
    optToClient.writeBytes(returnMess);
}


Limit variables to the smallest necessary scope

In both implementation you declare some variables at the top,
when that's really not needed and may invite mistakes.
It's best to declare variables at the smallest scope where you really need them.
For example, instead of:


    String input;
    // ...
    while(true)
    {
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));
        input = inFromUser.readLine();
        // ...



This is better:

    while(true)
    {
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));
        String input = inFromUser.readLine();
        // ...


Hardcoded values

Instead of hardcoding "localhost", 22003, 3000,
it would be better to put these values in constants with descriptive names,
for example:

private static final int TIMEOUT_MILLIS = 3000;
private static final String SERVER_HOST = "localhost";
private static final int SERVER_PORT = 22003;


Redundant variable

In TCPServer,
the message read from the client input stream is stored in the TCPclientMess variable,
and then assigned to the returnMess variable,
which is not used for anything else.
You don't need both variables, one of them would be enough.

Naming

You have a String named TCPclientMess.
The convention is to use camelCase for variable names.