Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UDP редиректор 
:(
    Опции темы
Bizquit
Дата 24.10.2006, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



Суть проблемы: с моего компа нет выхода на основные сервера моей любимой игрушки (кому интересно - ИЛ2 Штурмовик) в интернете. Но один хороший товарищ готов предоставить свой комп в роли прокси.
Что надо: Написать программулинку которая бы тупо прослушивала определенный порт  и перенаправляла бы UDP пакеты от сервера ко мне через промежуточную проксю. Ну что-то типа UdpMappedPort в Indy. Этот компонент от Indy не подходит, т.к. клиентский сокет он создает и освобождает каждый раз при отправке данных. В и тоге от меня появляется слишком много соединений. Не пойдет.

Что посоветуете почитать и с чего начать? В общем если есть чем помочь - буду весьма признателен. 
PM MAIL   Вверх
Bizquit
Дата 24.10.2006, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



да и еще... совсем обнаглею  smile  хотелось бы все сделать без компанент... для того чтобы можно было считать отправленный и принятый траффик, кол-во пакетов. Ибо траффик платный, и необходимо регистрировать сколько отослано и сколько принято...

Это сообщение отредактировал(а) Bizquit - 24.10.2006, 05:40
PM MAIL   Вверх
Romikgy
Дата 24.10.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Bizquit @  24.10.2006,  03:58 Найти цитируемый пост)
клиентский сокет он создает и освобождает каждый раз при отправке данных.


Bizquit, ты знаешь как работает юдп ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bizquit
Дата 24.10.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



Блин, да знаю... я не правильно выразился smile  
Я имел в виду, что на каждый запрос он создает и уничтожает клиентский компонент... в итоге каждый запрос от клиета уходит с разных локальных портов. Т.е. нумирация портов идет с нарастающей. И ответы от удаленного сервера идут на разные порты.

Хотя в принципе я уже почти победил проблему использованием WinSocks smile , а не Indy  smile, но если кто сможет чем помочь, буду очень признателен.
PM MAIL   Вверх
drkot
Дата 24.10.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 0
Всего: 8



Bizquit, вобще непонятно в чем проблема.
Такая задача решается парой сокетов. (В 6 инди есть компонент proxy в нем как раз решена данная задача и весьма элегантно)

PS: и вобще зачем задавать вопрос если через пять минут самому на него ответить?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Bizquit
Дата 1.11.2006, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



Все получилось, всем спасибо  smile 

Вопрос есть по подсчету траффика...

Поскольку сокет создается так:

Код

  S := Socket(AF_Inet, SOCK_DGRAM, IPPROTO_UDP);


то при чтении из сокета 

Код

  PacketLen := recv(S, PacketBuffer[0], MaxPacketSize, 0);


читаются только данные без заголовка пакета. Правильно ли считать, что длина пакета = PacketLen + 28. 

Поскольку длина заголовка:
Код

 TIPHeader = packed record
    HeaderLength_Version : byte;
    TypeOfService        : byte;  
    TotalLength_b1       : byte;  
    TotalLength_b2       : byte;
    Identification       : word;  
    FragmentationFlags   : word;
    TTL                  : byte;  
    Protocol             : byte;
    CheckSum_b1          : byte;
    CheckSum_b2          : byte;

    sourceIPb1           : byte;  
    sourceIPb2           : byte;
    sourceIPb3           : byte;
    sourceIPb4           : byte;
    destIPb1             : byte;  
    destIPb2             : byte;
    destIPb3             : byte;
    destIPb4             : byte;
  end;

  TUDPHeader = record
    src_portno_b1 : byte;
    src_portno_b2 : byte;
    dst_portno_b1 : byte;
    dst_portno_b2 : byte;
    udp_length    : Word;
    udp_checksum  : Word;
  end;


=28
PM MAIL   Вверх
Олег2005
Дата 1.11.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: нет
Всего: 11



Цитата(Bizquit @  1.11.2006,  05:52 Найти цитируемый пост)
Правильно ли считать, что длина пакета = PacketLen + 28. 

Да
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.