|
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24
|
|
Как на VB отослать широковещательный пакет?04.10.2010, 01:49. Показов 1600. Ответов 8
Метки нет (Все метки)
Никто не знает как на VB отослать широковещательный пакет...
вообще мне нужно чтобы его получили все машины в сети...
0
|
|
| 04.10.2010, 01:49 | |
|
Ответы с готовыми решениями:
8
Широковещательный пакет в локальную сеть Как в Windows ( 2000, XP ) отослать пакет "как есть" ? Как в Windows ( 2000, XP ) отослать пакет "как есть" ? |
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 08.10.2010, 13:54 | |
|
Можно так:
-Сервер, с помощью функций API CreateMailslot создает Mailslot и переходит в цикл ожидания пакетов (для широковещательной работы размер пакета д.б. менее 400 байт). Пакеты считываются с помощью ReadFile, предварительно убедившись в их наличии функцией GetMailSlotInfo; -Клиент, с помощью функций API CreateFile открывает Mailslot, созданный сервером и работает с ним как с обычным файлом функцией WriteFile (чтение не предусмотрено - канал односторонний).
0
|
|
|
Comanche
|
||||||
| 08.10.2010, 15:40 | ||||||
|
Пример:
|
||||||
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
||||||
| 09.10.2010, 05:01 | ||||||
|
А для приема сообщения нужно что-то типа
получать все компы этого домена (со звездочкой все компы сети, по крайней мере 2k-NT-xp). Однако высокой производительности мне в подобной связке достичь не удалось, даже без Sleep(100) в 100Mb-сети что-то порядка 1Mb/s. Если искуственно не ограничивать скорость передачи со стороны клиента сервер начинает пропускать пакеты! Испытывал и на двух соединенных компьютерах (2k и xp). При этом, при копировании эксплорером файлов, с учетом производительности дисковых подсистем обоих компов, скорость передачи между ними достигала свыше 6Mb/s. Вообще для меня это больная тема: как добиться такой скорости обмена. В настоящий момент я использую AddConnection2 и просто копирую файлы, но это криво, и приводит ко многим заморочкам.
0
|
||||||
|
Comanche
|
||||||
| 09.10.2010, 14:31 | ||||||
|
А ты попробуй вместо цикла использовать таймер:
|
||||||
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 10.10.2010, 11:46 | |
|
Я что-то не понял, как использование таймера может помочь в увеличении
скорости. Ведь проблема в том, что пакеты должны быть менее 400 байт. У меня они фиксированной длины. Пробовал и ровно 400 байт - не получается, хотя в справочниках написано 'не более 400 байт'. А это значит, для достижения скорости 6 Mb/s нужно бомбить сервер со скоростью не менее 16000 пакетов в секунду, а события таймера приходят не чаще, чем 18 раз в секунду, даже если установлен интервал таймера 1 мс. Но даже если и 1000 раз в секунду-все равно получается предел ~400Kb/s, не говоря уже о том, что события таймера низкоприоритетны со всеми вытекающими обстоятельствами! Думал выход в том, чтобы за раз читать несколько сообщений в цикле for i = 1 To MessageCount, и вот тут-то сервер начал вести себя не так как это по логике следовало из описаний вышеприведенных функций. А мой код - это максимум, что удалось выжать из Mailslot. PS: Этот код я написал на Си давно. А когда увидел вопрос переложил на VB. Результат неопробован - нет сети.
0
|
|
|
Comanche
|
|
| 10.10.2010, 11:58 | |
|
Согласен, неудачный вариант таймера - выдрал код из своей старой проги. Конечно, лучше пользоваться API-таймерами (шаг = 1 мс; функции SetTimer/KillTimer).
Думаю, попробовать стоит... |
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 10.10.2010, 13:23 | |
|
Не хочу надоедать, но как я выше писал, с интервалом 1мс получаем предел ~400Kb/c, если читать по одному пакету. А если не по одному,
то даже программа на Си, со всей своей скоростью, с циклом без Sleep (пробовал и Sleep(50), Sleep(1)) пропускает пакеты. У меня этому факту только одно объяснение: когда после GetMailslotInfo по циклу for i = 1 to MessageCount начинаем читать пакеты, наш сервер продолжает получать следующие пакеты, которые возможно из приемного буфера вытесняют предыдущие, еще не полностью выбранные пакеты, или что-то в этом роде, но при этом почему-то не выдает никаких ошибок. Надежная работа у меня получилась только с использованием ожидания подтверждения получения сервером пакета по второму каналу перед отправкой следующего. При этом производительность связки около 1 Mb/s, а сеть, теоретичесчи позволяет на проядок больше. Так каким способом должны пользоваться сервер и клиенты, чтобы было и бысторо и надежно? И еще, почему проверка идет по NextMsgSize, ведь количество принятых (готовых для чтения пакетов возвращается в MessageCount, а если там ноль, значение NextMsgSize не актуально?
0
|
|
|
Comanche
|
|
| 10.10.2010, 13:38 | |
|
Сдаюсь!
)
|
|
| 10.10.2010, 13:38 | |
|
Помогаю со студенческими работами здесь
9
Как определить, какой из подсетей принадлежит пакет IP-пакет? Как сделать широковещательный запрос в сети Как отослать e-mail из VB??? Как отослать письмо пользователю. Как отослать письмо на e-mail? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|