Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9

Что-то вроде ip телефонии

30.07.2013, 15:39. Показов 855. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется 2 программы: пусть это будут клиент и сервер.
Сервер передает данные кусочками (пакетами) по 1 Кб. Это может быть файл или поток данных, например, от вебкамеры. В общем, неважно.
Главное, что передача идет пакетами.
И тут возникают проблемы:
1) Пакет может потеряться
2) Пакет может быть поврежден при передаче.
3) Пакеты будут приниматься клиентом не в том порядке, в каком были отправлены сервером
4) Одновременно будут передаваться несколько файлов (пусть пока будут файлы) от одного сервера одному клиенту. Надо как-то их различать.
5) Задержка при передаче пакета от сервера к клиенту может меняться в пределах 100 - 30 000 мс. (Пока неважно)

Некоторые мои мысли:
- не нужно подтверждать принятие каждого пакета, чтобы не генерировать большой ответный трафик от клиента к серверу. Вместо этого можно например посылать эхо-запрос, например, "Я, сервер, передал 100 пакетов с номерами 0-99". Клиент должен ответить: "Я, клиент, принял 100 пакетов с номерами 0-99". (Может не надо делать эхо-запросы) Клиент будет отвечать только на эхо-запрос или запрашивать отправку пакета, если принятый пакет поврежден или не получен.
- сделать несколько типов пакетов. Например, эхо-запрос и эхо-ответ для проверки соединения и измерения задержки. И обычный пакет с данными.
- хранить тип пакета в пакете
- нумеровать пакеты по порядку отправления
- хранить номер отправляемого файла в пакете
- хранить хеш-сумму пакета в пакета
- делать запрос на повторную отправку пакета, если он потерян или поврежден.
- принятые пакеты проверяют на целостность, потом попадают в буфер, где они сортируются по своему номеру.

Структура пакета эхо-запроса и эхо-ответа:
| тип пакета | данные |
Структура обычного пакета с данными:
| тип пакета | номер потока | номер пакета | хеш-сумма | данные |

Примерно как это все будет работать:
1) клиент посылает эхо-запрос к серверу
2) сервер отвечает на эхо-запрос
3) клиент принимает эхо-ответ и считает задержку.
4) клиент посылает запрос на скачивание файла.
5) сервер начинает передачу пакетов (Здесь у меня вопрос. Сервер ведь не знает дошли до клиента пакеты или нет. Пока я сделаю отправку эхо-запроса клиенту каждые 100 пакетов. Хотя, может быть можно и обойтись и без этого)
6) отправляет эхо-запрос клиенту каждые 100 пакетов (дальше интереснее...)
7) клиент принимает пакет, проверяет его хеш-сумму, если пакет поврежден делает запрос на повторную отправку поврежденного пакета (пакеты пронумерованы)
8) если пакет не поврежден, его помещают в буфер, где все пакеты сортируются по своим номерам.
9) (Дальше тоже вопрос: Как определить какой пакет потерялся, а какой ещё не пришёл?)
10) если пакет с каким-либо номером отсутствует, то делается запрос на повторную отправку
11) Пакеты из буфера извлекаются в правильном порядке, из них извлекаются данные и записываются в файл.

Самое непонятное это как сделать алгоритм работы буфера, по каким условиям делать запрос на повторную отправку пакета? Самое простое что приходит на ум это таймер: если пакет с номером 10 не пришел в течении 500 мс, а пакеты с номерами 8,9,12,15 (ближайшие номера) уже пришли, то делать запрос.

Извините, если написал не в ту тему.

Добавлено через 3 минуты

Не по теме:

При чем тут ip телефония? Там тоже пакеты сначала попадают в буфер, дожидаются когда из них соберется непрерывный кусок данных и уже выходят из буфера сплошным потоком данных

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2013, 15:39
Ответы с готовыми решениями:

Что необходимо для IP телефонии по ЛВС
что необходимо для IP-телефонии по ЛВС, допустим имеется ЛВС 40 погрешность 5 пк и пару IP телефонов то просто в сеть их и ip настроить и...

PWS не может зарегистрить что-то вроде 'msdasql.dll' или что-то похожее.
Ну вот. Сяду, думаю, вечерком и форум себе сделаю. А не тут-то было. Что-то случилось вроде с моим PWS, потому что раньше подобные вещи...

Что делать чтобы в сетях связи, телефонии, радио и телевидения не было блуждающего электрического напряжения?
Что делать чтобы в сетях связи, телефонии, радио и телевидения не было блуждающего электрического напряжения? Не секрет, что электрическая...

4
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
30.07.2013, 16:29
Ну и сразу вопросы:
1. Какой протокол будет использоваться для передачи "пакетов"?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
30.07.2013, 16:47  [ТС]
IP. Если точнее то ICMP
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
31.07.2013, 12:52
ОМГ. Тогда для начала сюда: http://book.itep.ru/1/intro1.htm

Добавлено через 7 минут
ПыСы: да, а ТЗ-то на разработку имеется? Или как всегда бывает, - Заказчик сформулировал только одно требования "Сделайте мне [censored]" ?
1
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
01.08.2013, 19:46
Еще ознакомьтесь с протоколом RTP (Real-time Transport Protocol), чтобы не городить велосипед.

Добавлено через 8 минут

Не по теме:

И по телефонии...
Там, конечно, данные собираются в буфер... Но вовсе не обязаны ждать... Ибо попросту ушло время и данные потерялись и уже нет времени повторно что-то передать... да и места уже может не быть на стороне отправителя, чтобы что-то хранить и повторно отправить, ибо уже идут новые данные, которые надо быстрее отправлять.
Доказательство этому мы слышим в виде "бульканья-кваканья" связи при использовани IP-телефонии на дохлых каналах.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2013, 19:46
Помогаю со студенческими работами здесь

Что то вроде paint на C#
Вот решил сделать, что то похожее на ms paint. Вот что у меня получилось. using System; using System.Collections.Generic; ...

Что то вроде Маркера
Здравствуйте. и снова с тупым вопросом. можно ли как то реализовать что то типо как маркер, как в гугл картах. но ставить их не...

Что-то вроде усилителя... :)
В общем, задачка такая: Есть сигнал с выхода звуковой карты компа / телефона или mp3 плеера. Частота от 2 до 10.5 кГц. На вид - меиндр...

Что то вроде регистрации
Добрый день! Требуется сделать что то вроде регистрации пользователей с последующей авторизацией! С БД связывать не хочется. Регистрация...

Что-то вроде игры
Короче задали(на 4м то курсе) на паскалике сделать игру,суть которой такова: На примере двух групп людей, животных, насекомых,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru