¡No nos da muchos detalles aquí!
Si su propósito es realmente hacer una aplicación de chat completamente funcional y completa, le sugiero que consulte XMPP que es un protocolo abierto de mensajería instantánea. Here es una lista de algunas bibliotecas que lo implementan.
Si su propósito es estudiar programación de red y está más interesado en UDP versus TCP por ejemplo, entonces UDP es una mala elección para una aplicación de chat, ya que no garantiza mucho acerca de integridad de datos u ordenamiento. Sus mensajes podrían (¡y lo harán!) Ser recibidos en mal estado o algunos podrían incluso faltar. TCP hace eso para comprobarlo por usted.
En el medio (una muy simple aplicación de chat) se puede poner en práctica sus propias bibliotecas de protocolo y el uso que otros han sugerido aquí como Boost.asio, ACE, POCO, o incluso wxWidgets y Qt, que facilitará el manejo zócalo y también proporcionar lo que se necesita construir una aplicación de escritorio para los últimos 2.
+1 para TCP y yo daríamos otro +1 para Boost.Asio (y especialmente sus tcpstreams). – Tronic
Encontré que asio está mal documentado, no está bien soportado y es difícil de entender incluso para un programador experimentado. Yo no lo recomendaría. – Jay