Here are my thoughts regarding UDP, TCP, HTTP.
UDP (from Wikipedia)
It has no handshaking dialogues and thus exposes the user's program to any unreliability of the underlying network; there is no guarantee of delivery, ordering, or duplicate protection.
If you don't need Broadcasts or Multicasts but bidirectional data communication, I would chose TCP (or even HTTP).