UDP is the preferable choice, if you do not need to implement a protocol that requires TCP (eg HTTP SMTP etc.) When a proper master slave structure is chosen, it is no big deal to make the UDP reliable. All you need is to implement a checksum and check if the master gets a correct answer on every command.
TCP (Transmission_Control_Protocol) and UDP (User Datagram Protocol) are protocols to send messages and datas over the internet.
TCP | UDP | |
---|---|---|
limitations with LabVIEW embedded | The TCP functions never time out. They can only be interrupted by a timed loop with higher priority. Therefore a complex framework has to be implemented | The Zsystem targets cannot receive packets larger than 1480 bytes (Fragmented IP packets are not fully supported) Sending of larger data packets is no poblem. |
packet order | organized by the protocol | must be organized by the application if required |
protocol overhead | moderate (~4 seconds to open a connection receive a message send a answer and close the connection again) The transmission is much faster when the connection is held open | minimal |
unknown packet size | the packet size has to be sent first so that the receiver knows how many bytes will folllow | entire packets are received |
Wikipedia compares the two protocols as follows: (state: 25.01.2011)
TCP is a connection-oriented protocol, which means that it requires handshaking to set up end-to-end communications. Once a connection is set up user data may be sent bi-directionally over the connection.
UDP is a simpler message-based connectionless protocol. Connectionless protocols do not set up a dedicated end-to-end connection. Communication is achieved by transmitting information in one direction from source to destination without verifying the readiness or state of the receiver.