Link to a very basic tutorial about TCP (evolved to: TCP-socket democode to send / receive data / characters similar to serial

A value of 0 generally evaluates to false, and a value of non-zero evaluates to true. If you look in the function everySecond() it decrements timeout[n]; to zero then stops. Once it is zero then any test on it will evaluate as false.

if(someValue) {
....

Is the same as:

if(someValue == 0 { // [edit Ooops!, this is wrong]
if(someValue != 0 {  // Should be this
...

You realise I am just getting my head around this myself?
If you wrap this:

    sprintf(message, "T");
    clients[clientIndex]->add(message, strlen(message));
    clients[clientIndex]->send();

Into a function then I think you will be close to getting what you want. You will need to overload the function to deal with printing different variable types the way Arduino's Serial.print() does. I know very little about this though, I've not studied how it works and can't advise you.

[Edit see reply #79 from @christop, thank you for pointing out the mistake the above]