Описание совершенно недостаточно - Если есть одни и те же клиенты, к которым вы хотите отправить данные и получать данные, стандартной практикой является один сокет за соединение (TCP), или если ваше приложение UDP, вы действительно может просто использовать только один сокет, за исключением того, что вы должны сделать много государственного обслуживания в приложении. (например, получение удаленного адреса в recvfrom - сохранение его в некоторой структуре для последующего использования и использование этого для отправки на другой конец). Также - когда у вас есть два потока - любой доступ к «совместному состоянию должен быть синхронизирован», добавляя дополнительные служебные данные. Поэтому, если вы не можете конкретно сказать о том, что вы хотите сделать - хорошей стратегии сложно сказать.