|
Просто Лис
|
|
Что-то вроде 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
|
|
| 30.07.2013, 15:39 | |
|
Ответы с готовыми решениями:
4
Что необходимо для IP телефонии по ЛВС PWS не может зарегистрить что-то вроде 'msdasql.dll' или что-то похожее. Что делать чтобы в сетях связи, телефонии, радио и телевидения не было блуждающего электрического напряжения? |
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 30.07.2013, 16:29 | |
|
Ну и сразу вопросы:
1. Какой протокол будет использоваться для передачи "пакетов"?
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 минут Не по теме: И по телефонии...
0
|
|
| 01.08.2013, 19:46 | |
|
Помогаю со студенческими работами здесь
5
Что то вроде paint на C#
Что-то вроде усилителя... :) Что то вроде регистрации Что-то вроде игры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|