Здравствуйте,
устройство подключается к ПК с помощью сетевого кабеля.Интерфейс Gigabit Ethernet.
Устройство принимает/получает пакеты размером 86 байт (включая MAC заголовок).
Структура пакета: MAC адрес приёмника, MAC адрес источника, два байта — длина сообщения.
Затем идет 8 байтовый заголовок и 64 байта данных.
Из устройства в ПК идут широковещательные пакеты.
Одна из команд реализованных в устройстве — передача в ПК изображения 640x480, разбитого на пакеты.
640 байт данных в пакете содержат фрагмент изображения (одну строку).
Между кадрами (изображениями) сейчас интервал в 40 мс. То есть 480 строк изображения принимаются ПК с задержкой в 40 мс.
Приложение использует Winpcap интерфейс.
Как один из вариантов рассматривается работа с устройством через UDP протокол.
Как заставить ПК (ОС) принимать данные на большей скорости.
Здравствуйте, milkpot, Вы писали:
M>Из устройства в ПК идут широковещательные пакеты.
Если в гигабитной сети есть хотя бы одно устройство, работающее на 100 мбит, то бродкасты будут идти на скорости 100 мбит. А если есть хотя бы одно 10-мегабитное устройство, то бродкасты будут идти на скорости 10 мбит.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, milkpot, Вы писали:
M>>Из устройства в ПК идут широковещательные пакеты.
Pzz>Если в гигабитной сети есть хотя бы одно устройство, работающее на 100 мбит, то бродкасты будут идти на скорости 100 мбит. А если есть хотя бы одно 10-мегабитное устройство, то бродкасты будут идти на скорости 10 мбит.
Правильно ли я понимаю, переход от ethernet к udp не повляет на скорость работы приложения?
Как заставить ПК принимать данные на большей скорости?
Здравствуйте, milkpot, Вы писали:
M>Правильно ли я понимаю, переход от ethernet к udp не повляет на скорость работы приложения?
Это несвязные вещи — возможно вы имели в виду от tcp к udp — нет, на скорость это не повлияет.
M>Как заставить ПК принимать данные на большей скорости?
Здравствуйте, Pzz, Вы писали:
Pzz>Если в гигабитной сети есть хотя бы одно устройство, работающее на 100 мбит, то бродкасты будут идти на скорости 100 мбит. А если есть хотя бы одно 10-мегабитное устройство, то бродкасты будут идти на скорости 10 мбит.
Можно ссылку на описание такого поведения? Вроде все современные не допустят подобного.
Здравствуйте, Somescout, Вы писали:
Pzz>>Если в гигабитной сети есть хотя бы одно устройство, работающее на 100 мбит, то бродкасты будут идти на скорости 100 мбит. А если есть хотя бы одно 10-мегабитное устройство, то бродкасты будут идти на скорости 10 мбит.
S>Можно ссылку на описание такого поведения? Вроде все современные не допустят подобного.
А как они, интересно, этого не допустят? Предположим, какое-то устройство льет бродкасты струей на скорости 1 гигабит. Что должен делать свитч, если в него воткнуты более медленные устройства?
Здравствуйте, milkpot, Вы писали:
M>Правильно ли я понимаю, переход от ethernet к udp не повляет на скорость работы приложения?
Да.
M>Как заставить ПК принимать данные на большей скорости?
Ну, для начала, понять, кого тут надо заставлять: ПК принимать пакеты побыстрее, или устройство их побыстрее отправлять. Откуда идея, что тормозит именно ПК?
Здравствуйте, Pzz, Вы писали:
S>>Можно ссылку на описание такого поведения? Вроде все современные не допустят подобного.
Pzz>А как они, интересно, этого не допустят? Предположим, какое-то устройство льет бродкасты струей на скорости 1 гигабит. Что должен делать свитч, если в него воткнуты более медленные устройства?
Если интерфейс не успевает принять пакеты, то он просто их отбрасывает, всех остальных интерфейсов это не касается.
Здравствуйте, Somescout, Вы писали:
Pzz>>А как они, интересно, этого не допустят? Предположим, какое-то устройство льет бродкасты струей на скорости 1 гигабит. Что должен делать свитч, если в него воткнуты более медленные устройства?
S>Если интерфейс не успевает принять пакеты, то он просто их отбрасывает, всех остальных интерфейсов это не касается.
Ну это не самая светлая идея, на самом деле. В результате при некоторых раскладах пакеты начнут массово теряться, и сеть будет работать крайне неустойчиво.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, milkpot, Вы писали:
M>>Правильно ли я понимаю, переход от ethernet к udp не повляет на скорость работы приложения?
Pzz>Да.
M>>Как заставить ПК принимать данные на большей скорости?
Pzz>Ну, для начала, понять, кого тут надо заставлять: ПК принимать пакеты побыстрее, или устройство их побыстрее отправлять. Откуда идея, что тормозит именно ПК?
Устройство посылает данные на заданной скорости, приложение принимает данные, которые выглядят как рассыпавшаяся картинка.
В аппаратуре увеличивается временной интервал между блоками посылаемого кадра, в результате приложение принимает кадры целые, без сбоев
в изображении.
Здравствуйте, Pzz, Вы писали:
Pzz>Ну это не самая светлая идея, на самом деле. В результате при некоторых раскладах пакеты начнут массово теряться, и сеть будет работать крайне неустойчиво.
S>Если интерфейс не успевает принять пакеты, то он просто их отбрасывает, всех остальных интерфейсов это не касается.
+1 именно так и происходит. Я когдато давно даже специально экспериментировал, UDP пакетами. Правда то были 100мбит свич с некоторыми портами работающими на 10 мбит.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Pzz, Вы писали:
Pzz>>>А как они, интересно, этого не допустят? Предположим, какое-то устройство льет бродкасты струей на скорости 1 гигабит. Что должен делать свитч, если в него воткнуты более медленные устройства?
S>>Если интерфейс не успевает принять пакеты, то он просто их отбрасывает, всех остальных интерфейсов это не касается.
Pzz>Ну это не самая светлая идея, на самом деле. В результате при некоторых раскладах пакеты начнут массово теряться, и сеть будет работать крайне неустойчиво.
Тем не менее это именно так и работает, и сеть вполне нормально работает