Asyncstreams is a tool/object to feed data into a TCP/IP socket's input and output streams. Asynch will queue messages in its buffer, then send them all at once. Asynchstreams handles all of this for you, on seperate threads mind you, and raises a _NewData event when data is received. UDP sockets do not have input or output streams, simply, you build the packet yourself and send it when necessary. When a packet arrives the _PacketArrived event is raised. There are marked differences between TCP and UDP protocols, which, it seems like you are already aware. Depending on the type of application you are building, the requirements of data reception reliability, and the amount of traffic you will be sending will determine which protocol to implement.