You should close and free the ListenerSocket last in the procedure for good form. The timer won't run inside the procedure but it's cleaner to free them last.
The reason you can still communicate is because the Connections-sockets themselves (the array) are still connected. You only shut down the listening for NEW connections. If you want to close down all sockets you also need to clean up the connection-socket array.