Я разрабатываю протокол UDP, для которого требуется только один клиент и один сервер, однако мне бы хотелось иметь возможность поддержки нескольких клиентов или, что еще лучше, нескольких клиентов на одном компьютере.
Когда клиент подключается к серверу, сервер получает IP-адрес клиента и исходящий UDP-порт вместе с сообщением.Тем не менее, я не имел никакого успеха в ответе клиенту через этот исходящий порт.
Я предполагаю, что мой вопрос о том, как правильно реализовать нечто подобное, если данные должны отправляться в обе стороны (клиент-сервер и сервер обратно-клиент).Теперь мне кажется, что одного сокета будет недостаточно, и что и клиент, и сервер должны поддерживать как «слушающий» сокет, так и отдельный «отправляющий» сокет.Отправляющий сокет также должен быть повторно открыт и закрыт, если получатель меняется.Возможно, сервер будет иметь один сокет отправки на подключенного клиента.
Поскольку кажется, что исходящий порт UDP не является действительно полезным значением, я должен отслеживать порты из моего протокола, чтобы два клиента на конкретной машине могли работать со своими индивидуальными портами прослушиванияпередайте это на сервер, и сервер просто отправит данные на соответствующие порты после явного уведомления о том, что они собой представляют.
Редактировать: Хорошо, я не хочу ответа «Использовать TCP»,даже если это может быть правильный ответ.Я немного опишу приложение: я управляю оборудованием удаленно в режиме реального времени через Интернет.Я хочу, чтобы задержка была как можно меньше, а целостность данных TCP и гарантии порядка просто не помогут.Мне просто нужен кто-то, кто знаком с сетевым кодом на основе дейтаграмм, чтобы помочь мне убедиться в правильности моего подхода.