I am currently working on a project that require me to communicate between several Raspberry Pi's and a computer. I'll display data that sent by Raspberry Pi on that computer. Since I am using Raspberry Pi, I thought I can take advantage of using network layer protocols. Therefore, I concatenated almost thousand float numbers as a string and send it over Local Area Network using UDP protocol. At computer's side, I am parsing those float numbers from string and showing them as live data plots. This process is not for one time, it's working in a loop. I haven't seen any problems so far but my question is "Is there a way to make communication more relaible? What would you use for that?"
As stated in the comments, TCP is overall a better choice than UDP when it comes to reliability.
UDP is lightweight and with a lot less overhead than TCP. Once you send a UDP message, you do not expect a return message that confirm whether the message was received or not. To give you a practical example: UDP is used in video games a lot because it reduces the latency and the graphical engine can live up with a loss packet. When players play online they bombard the network with crazy amount of small packet.
There is other implementation that can stack on top of the TCP protocol, but this will be linked to specific requirement and use case scenario.
TCP on the other hand is a heavyweight protocol with reliability in mind. Each packet contains a lot more of overhead to prevent corruption and to ensure that the data was received properly. It is mandatory that each TCP message received is confirmed to the sender. This means that one packet will create two transmission.
Back to your question, on a local network with few data transfer, you will probably never see any difference and will likely only drop a packet once in a while. If you update quite frequently, but dropping is not crucial UDP is the defacto choice. If you want to know when a packet fail and you want more reliability and detection of failure, TCP is your friend.