Theres no reason to be closing and re-opening the TcpListener in each iteration. Keep it open and listening. The reason your application does not respond is that you're executing an infinite loop in it. And not only an infinite loop, but an infinite recursive loop. You're bound to get a StackOverflowException after running your code for some time.
Search here on MSDN on Threading and you'll find what you need to run the code in a background thread. Also, dont use a recursive infinite loop.. this, for example, would be much better:

VB.NET Code:
  1. While(True)
  2. ' Code goes here.
  3. End While