Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
8-1176853126
Adic
2007-04-18 03:38
2008.03.09
Быстрое определение цвета


2-1202557076
MySQLProgrammer
2008-02-09 14:37
2008.03.09
Извлечение данных из TDataSource


2-1202890066
arreke
2008-02-13 11:07
2008.03.09
Удалить самого себя


6-1181805887
Арсений
2007-06-14 11:24
2008.03.09
Заполнить TEXTAREA используя TWebBrowser


15-1201973141
Maloj2007
2008-02-02 20:25
2008.03.09
Копирование и вставка в компоненте TRichViewEdit




   Наверх