get message form tcp server

      gsm.WhileSimpleRead();

What does this do? It implies that it reads something, which implies that it should return (or at least output somehow) what it read. If it returns something, why don't you print it?

What does the code actually do? What do you expect it to do?