Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

Привязать UDPClient к сетевому интерфейсу   Найти похожие ветки 

 
kami   (2008-02-12 22:26) [0]

Есть задача передачи большого объема информации через каналы с ограниченной пропускной способностью (GPRS).
Передача идет UDP-потоком (RTP-протокол). Нужно каждый UDP-клиент "связать" со своим GPRS-модемом, чтобы Windows не направило все данные в один и тот же модем.

Насколько понял, Indy позволяют такое делать только с серверами, а в этом нет необходимости.
Т.о, взяв простейшие UDP компоненты, и просмотрев их внутренности вместе с MSDN получилось следующее :
(привожу только основной код, проверки возвращаемых функциями ответов опускаю, курсивом - добавленный мной код)


procedure TUDPClient.Open;
.....
begin
GetSockAddrIn(FHost, FPort, SockAddrIn); // функция заполняет SockAddrIn
FLocalSocket:= socket(PF_INET, FType, 0);

GetSockAddrIn(FBindHost, FBindPort, localSockAddrIn);
Bind(FLocalSocket, localSockAddrIn, SizeOf(localSockAddrIn));


WSAASyncSelect(FLocalSocket, FHandle, WM_ASYNCSELECT, FD_READ);
connect(FLocalSocket, SockAddrIn, SizeOf(SockAddrIn));
....
end;


Вопрос 1 - правильно ли я понял MSDN (все функции не возвращают ошибок при отработке), и чем можно мониторить откуда (с какого IP) отправляются пакеты?

Вопрос 2 - может, я зря это все затеял и есть готовые компоненты (не слишком сложные, как Indy, чтобы можно было покопаться в их внутренностях) позволяющие осуществить это?


 
Slym ©   (2008-02-13 04:56) [1]

через виндовую таблицу маршрутизации не перепрыгнуть :(
в отсутствии частных маршрутов все будет слать в маршрут по умолчанию, а его последний подключившийся модем


 
Evgeny V ©   (2008-02-13 05:59) [2]


> kami   (12.02.08 22:26)  
> Вопрос 1 - правильно ли я понял MSDN (все функции не возвращают
> ошибок при отработке)

Нет не правильно, такого в MSDN такого в MSDN не написано.....

Если ты связал (bind) сокет  с определенным интерфейсом (адресом), то пакет будет отправлен через этот интерфейс.


 
kami   (2008-02-13 22:41) [3]


> Если ты связал (bind) сокет  с определенным интерфейсом
> (адресом), то пакет будет отправлен через этот интерфейс.

Спасибо, первая часть вопроса снята. На вторую ответил сам - TCPMon отлично справляется с этим.



Страницы: 1 вся ветка

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1202836515
transtream
2008-02-12 20:15
2008.03.09
Как загрузить в Memo текст из файла в Юникоде


15-1202135900
oldman
2008-02-04 17:38
2008.03.09
Где можно бесплатно завести большой почтовый ящик?


15-1201521955
Карелин Артем
2008-01-28 15:05
2008.03.09
Какие средства обработки очередей существуют?


4-1184068039
Инс
2007-07-10 15:47
2008.03.09
fs:


15-1201997117
bagos
2008-02-03 03:05
2008.03.09
защита программы от декомпиляции