TCP.
UDP messages are sent, but there is no check or guarantee whether they arrive or not. Also if you send multiple UDP packets there's no guarantee that they will arrive in the same order as they were sent.

Its important to understand how sending information over a connection works before deciding on a protocol. When you send data over a connection it is broken down into small, standard size chunks called packets. The difference in the two protocols you've described is how they handle packets.

UDP simply takes a file, breaks it up, and sends each packet out onto the network. This sounds good in theory, but problems in the network can easily cause some packets to be lost or arrive in a different order than they were sent (think of it like the mail).

TCP also breaks up a file, but it adds a little bit of information that tells the receiving client where it goes when the file gets put back together. This fixes the out of order problem. TCP also requires a client to tell the sender when it receives a packet, which means any lost packets will be resent (and so on until it reaches the client).

I would strongly recommend TCP for the application you are describing. My team used TCP for a similar system we made as a school project.

This question has already been answered. Start a new discussion instead.