UDP proxy (Borland C++)(help?)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jes, 26 May 2007.

  1. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Суть: Решил написать на С простенький udp proxy. для одного клиента пишется за 10 минут.

    но как организовать сервер для большого количества клиентов? точнее как заставить его различать , кому именно адресованны пакеты?
     
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Составлять таблицу открытых соединений =)
     
  3. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    хммм, я продумал принцып...
    но он может быть не удобен т к ... приходится использовать несколько(или много) портов...и впринципе
    [​IMG]
    И так, приложение - сервер имеет порт с открытым IdUDPServer(обозначен синим цветом), который при запросе с нового ip проводит некую "авторизацию" , и динамически создает сокет и резервирует его для работы с этим IP. Тоесть UdpServer принимает пакет и рересылает его через соответствующий порт...
    Тогда все приходящие на порт этого сокета ответы с сервера(server 1),можно будет легко переслать обратно клиенту.Тоесть отпадает необходимость програмно рыться во всех пакетах с серверов и распределять их между клиентами.Но я так и не смог придумать реализацию запроса клиента.
    Тоесть: Клиент1 посылает на прокси пакет с информацией и должен послать адрес , куда этот пакет переслать.
    Впринципе можно написать клиент для работы в режиме прокси, который бы менял в пакете адрес получателя на адрес прокси , а адрес получателя выделял бы для прокси как адрес для пересылки...
    Но такой подход требует весьма масштабного подхода, который выводит проэкт на коммерческий уровень...
    более дилетантский подход:
    Можно также написать клиент, который перенаправил бы все пакеты на прокси (ну через тот же Hosts например), а вслед за каждым пакетом отправлял бы пакет с адресом для пересылки...

    Ну и если такой proxy нужен в узкой специализации (для конкретного торояна, или игры) тоесть конкретный ip и порт, то он требует всего лишь настройки приложения,для которого используется udp proxy ... ( например адрес Геймспая , или еще чего нибуть в другом направлении...)

    ps: если б кто-нибуть подсказал более простой способ ,был бы ему оч. благодарен...^^