|
![]() |
#1 |
Member
|
Цитата:
Сообщение от SHiSHok
...
1) при отсутствии получателя очень большая задержка ... Сегодня проверил. Вот такая конструкция WinAPI::shellExecute("cmd", "/c net send ddd 123", "", "", 0, false); в джобе отрабатывает мгновенно. Это при том, что никакого "ddd" в сети, естественно, нет. При этом из командной строки действительно висит минуту примерно (мерял на глаз). Как проявляется задержка?
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: zemlyn (1). |
![]() |
#2 |
Участник
|
Проверил. Акса действительно мгновенно отрабатывает. При этом: создается процесс cmd и 2 netsend (почему 2 непонимаю) и дальше время отработки net send никоим образом не волнует процесс Аксы (нет юзера - висит около минуты и умирает). В общем то такой метод вызова то что надо. А я вызывал следующим образом:
X++: // SHiSHok.FRA 20070419 static int NetSend(str _hostTo, str _msg) { DLL DLL = new DLL('NetApi32.dll'); DLLFunction DLLnetSend = new DLLFunction(DLL,"NetMessageBufferSend"); binary hostTo, msg; ; #WinAPI DLLnetSend.arg(ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord); DLLnetSend.returns(ExtTypes::DWord); hostTo = winapi::ansi2unicode(_hostTo); msg = winapi::ansi2unicode(_msg); return DLLnetSend.call(0, hostTo, 0, msg, strlen(_msg)*2); }
__________________
--- SHiSHok |
|
![]() |
#3 |
Участник
|
Единственное но - это что один такой net send около 8 метров откушивает. т.е. 20 хостов не доступно - 160 метров ОЗУ кусь на минуту. как бы и не много, но и не мало.
__________________
--- SHiSHok |
|
![]() |
#4 |
Участник
|
Из этих 8 метров бОльшая часть - код и разделяемые данные самого net.exe и используемых им библиотек. За счет виндовых механизмов управления виртуальной памятью эти код и данные из адресных пространств разных процессов отображаются на одни и те же страницы физической памяти, т.е. реально в памяти находится лишь один экземпляр, к примеру, секции кода какой-нить kernel32.dll... так что ничего страшного при запуске 20 экземпляров программы, если она сама динамически не выделяет себе кучу памяти, не произойдет.
|
|