![]() |
|
Модераторы: xvr |
![]()
|
|
| Orthenner |
|
||||
![]() Любитель ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 22.5.2004 Где: Мытищи Репутация: нет Всего: нет |
Доброго времени суток.
Бьюсь над вопросом, никак не могу получить ответ. Задача следующая. Есть два радиомодема. Подключаются к rs-232 порту. Канал прозрачный. Пробрасываю следующими командами ppp соединение:
Соединение поднимается без проблем, пакетики исправно ходят. Была поставлена задача - написать программу, которая через UDP отсылала бы по этому каналу файл с данными с регулируемым размером пакета и засекала бы время прихода каждого пакета. Программу написал, на ethernet все работает, однако при пересылке файла по радиоканалу, программа быстро забивает буфер самого модема (1 КБ). На удаленную машину приходит не более 2 КБ данных. Пробовал ограничивать размер буффера на сокет, однако меньше 2КБ мне поставить не удалось... При этом ситуация улучшилась но ненамного... В связи с этим появляются вопросы: Как поставить буффер на сокет меньше 2КБ? Как можно заставить sendto ждать до тех пор, пока не будет отправлен предыдущий пакет? Что еще можно попробовать в данной ситуации? Вот пара функций клиента:
Это сообщение отредактировал(а) Orthenner - 11.7.2006, 16:26 |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
По RFC сервер UDP'шку может вообще выбросить. В данном случае, ИМХО, буфер уменьшать не надо, Наоборот увеличить (или не трогать). Пусть система их копит.
При использовании UDP проблема узкого канала должна решаться на уровне приложения. Т.е. Повтор передачи, подтверждение, etc на уровне программы. Конкретно сюда можно попробовать для начала прогнать цикл : 1. Посылка удп. 2. Прием удп, посылка подтверждения. И засечь время, из которого уже и рассчитывать время передачи (временные задержки придется ставить вручную). На практике UDP сервер обычно подтверждает получение каждой UDP-датаграммы от клиента. |
|||
|
||||
| Orthenner |
|
|||
![]() Любитель ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 22.5.2004 Где: Мытищи Репутация: нет Всего: нет |
Проблема решена...
Дело было в настройках модема. При исключении контроля соответствия скорости RS-232 и радиоканала из необходимых параметров неактивности линии CTS все заработало... RTSCTS не включался..... |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |