![]() |
UDP proxy (Borland C++)(help?)
Суть: Решил написать на С простенький udp proxy. для одного клиента пишется за 10 минут.
но как организовать сервер для большого количества клиентов? точнее как заставить его различать , кому именно адресованны пакеты? |
Составлять таблицу открытых соединений =)
|
хммм, я продумал принцып...
но он может быть не удобен т к ... приходится использовать несколько(или много) портов...и впринципе http://img516.imageshack.us/img516/3...5753qa0.th.jpg И так, приложение - сервер имеет порт с открытым IdUDPServer(обозначен синим цветом), который при запросе с нового ip проводит некую "авторизацию" , и динамически создает сокет и резервирует его для работы с этим IP. Тоесть UdpServer принимает пакет и рересылает его через соответствующий порт... Тогда все приходящие на порт этого сокета ответы с сервера(server 1),можно будет легко переслать обратно клиенту.Тоесть отпадает необходимость програмно рыться во всех пакетах с серверов и распределять их между клиентами.Но я так и не смог придумать реализацию запроса клиента. Тоесть: Клиент1 посылает на прокси пакет с информацией и должен послать адрес , куда этот пакет переслать. Впринципе можно написать клиент для работы в режиме прокси, который бы менял в пакете адрес получателя на адрес прокси , а адрес получателя выделял бы для прокси как адрес для пересылки... Но такой подход требует весьма масштабного подхода, который выводит проэкт на коммерческий уровень... более дилетантский подход: Можно также написать клиент, который перенаправил бы все пакеты на прокси (ну через тот же Hosts например), а вслед за каждым пакетом отправлял бы пакет с адресом для пересылки... Ну и если такой proxy нужен в узкой специализации (для конкретного торояна, или игры) тоесть конкретный ip и порт, то он требует всего лишь настройки приложения,для которого используется udp proxy ... ( например адрес Геймспая , или еще чего нибуть в другом направлении...) ps: если б кто-нибуть подсказал более простой способ ,был бы ему оч. благодарен...^^ |
| Время: 18:02 |