Я кодирую серверно-клиентское программирование на C с использованием API сокетов, где я пытаюсь отправить управляющую информацию клиенту для использования другого TCP-соединения. Всякий раз, когда сервер создает новый сокет (TCP), я хочу, чтобы он уведомлял клиента об использовании нового сокета для дальнейшей связи. В настоящее время я подумал об отправке пакета UDP клиенту для уведомления. Как только клиент получает пакет, он отправляет ACK обратно на сервер и в то же время переключается на другое TCP-соединение. Я хочу знать, лучше ли передавать управляющие данные по сети, кроме использования UDP, так как это ненадежно. Спасибо.
Я хотел бы уточнить, чего я пытаюсь достичь. Я собираюсь измерить такие параметры, как пропускная способность, задержка, окно приема и т. д. в качестве метрики для TCP-соединения IPv4 и IPv6. Основываясь на наблюдаемой производительности, я буду переключаться между двумя протоколами, которые обеспечивают лучшую производительность. Как только будет принято решение о переключении, я должен уведомить партнера (может быть клиентом или сервером в зависимости от типа пропускной способности, которую я измеряю). . Я начинаю с соединения IPv4 и одновременно открываю другое соединение — IPv6 для измерения пропускной способности и задержки.
Если соединение IPv6 обеспечивает лучшую производительность, мне нужно указать клиенту переключиться на IPv6. В этом случае оба соединения открыты для периодического мониторинга полосы пропускания для принятия решения о переключении. Итак, у меня есть два вопроса по этому аспекту. 1. Является ли хорошей идеей поддерживать два соединения одновременно. Я могу создать другое соединение только тогда, когда мне нужно измерить метрику, поскольку путь, пройденный между двумя машинами, вряд ли изменится. Если да, я могу передать управляющую информацию, используя другое TCP-соединение, чтобы сообщить клиенту о переключении. Таким образом я также могу измерить пропускную способность и уведомить клиента
Если у двух два TCP-соединения не очень хорошая идея, я могу использовать UDP для отправки управляющей информации. Я избегаю отправки управляющей информации о соединении, используемом для передачи фактических данных, поскольку это будет накладным. Мой код будет работать как промежуточное ПО для передачи данных, где приложение будет вызывать мои функции/макросы для передачи данных, а внутренний код позаботится об измерении пропускной способности и принятии решения о переключении. хочу добиться. Заранее благодарим за отзыв