Нужно быстро написать попап (программа, отсылающая-как net send- и принимающая сообщения(причем иногда на группу компов одновременно(широковещание, как я понимаю))). Какие функции позволяют это делать? Помочь может всё. Особенно исходник...
Видимо, фиктивный ответ самому себе - лучший способ привлечь внимание к теме на этом сайте. Господа создатели форума: сделайте так чтобы недавно созданные темы тоже появлялись при входе в форум по понятным причинам.
Не совсем так. Кто-то из модераторов (не я, в данном случае) решил поместить это в HELHEIM. Причину см. в правилах. Однако я так понимаю, ты поленился погуглить.
НЕПРАВДА! Во-первых, в HELHEIM эту тему создал я сам (не обратил внимание, что это значит..). На самом деле ей место в NetWorks (считайте, что она там или переместите её туда(если можно)). Во-втрорых я "Гуглил" и "Яндексил" всю ночь и нарыл следующее: используется функция NetMessageBufferSend(http://vbnet.mvps.org/index.html?code/network/net messagebuffersend.htm): Я и написал, руководствуясь win32.hlp: .386 .model flat,stdcall include \MASM32\include\kernel32.inc include \MASM32\include\masm32.inc include \MASM32\include\netapi32.inc includelib \MASM32\lib\kernel32.lib includelib \MASM32\lib\masm32.lib includelib \MASM32\lib\netapi32.lib .data elf db 'E',0,'L',0,'F',0,0,0,0 len=$-kaval .code start: invoke NetMessageBufferSend,offset elf,offset elf,offset elf,offset elf,2 .if (eax==0) invoke StdOut,offset kaval .endif invoke ExitProcess,0 end start ELF - имя моего компа в сети. А оно не работает. Ну я ещё перепробовал разные варианты с АСКИ- и Юникод-строкаи - ни в какую... Но даже если бы оно работало это было бы не всё. Нужно ж ещё и принимать сообщения... Короче, я в отчаянии. Подскажите кто-нибудь!
А у тебя служба Messenger включена? Передавать надо именно в Unicode, в описании четко прописано LPCWSTR Код (Text): NET_API_STATUS NetMessageBufferSend( LPCWSTR servername, LPCWSTR msgname, LPCWSTR fromname, LPBYTE buf, DWORD buflen )
Вот я тут попробовал накодить эту штуку , получилось конечно ужасно (потестить не могу, т.к. нет у меня сетки да и сервиса нужного). В архивчике еще несколько примеров по теме на других языках... 1676044022__NetSend.zip
Messenger, как я понимаю, во время теста должна быть отключена. Интересно, что когда я дизассемлил IDA'ой и WDASM'ом net.exe и попап, я искал, но не нашел этой функции...(хотя нашёл множество других из NetApi)(это так, к слову) Пример я проверю сегодня же(спасибо большое) Вопрос ещё и в том, как принимать такие сообщения. У меня есть подозрения, что протокол передачи - UDP... Можно проверить FireWall'ом и LanSpy (на моём компе не даёт сделать такую проверку, жалуется какой-то на сетевой экран, а что за экран - не понять(я никакого не ставил) - не суть). И тогда, видимо попап - просто UDP-сервер. Но это всё догадки, которые лишь можно проверить. Проверьте, если кто может.
Все гораздо хуже. Советую начать от Адама. В 3.1, 95-м и 98-м была служба Winpop. Работает она по протоколу NETBEUI - самоделка от МС. Я проверил через виртуальную машину с 98-м и без протокола TCP/IP - сообщения прекрасно ходят в обе стороны : из 98-го в 2000-й и сообщение посланное через net send попадает в Winpop. Посмотрел я и экспорты функций в net.exe в 2000-м. Ковыряться лень - там есть API из mpr.dll со словами connection. Похоже строится канал и уже по нему передают сообщения. Возможно что при отсутствии NETBEUI работает NETBIOS через TCP/IP, но это я оставляю тебе....
А почему нельзя использовать сокеты, создать тот же клиент-сервер на UDP? или необходимо именно из 98 посылать аналог net send на машины с 2000?
Ура!! Нашёл. Набрал в Яндексе что-то вроде NETBEUI Winpopup и неожиданно для себя обнаружил ссылку на след. инструкции: Отправка: Способ 1. Функция NetMessageBufferSend, как и было сказано выше. Способ 2(у меня только он заработал...) - работа с почтовыми ящиками... - всё в примере (Дельфи, правда) Прием: Один несложный способ Создаём почтовый ящик с именем \\.\mailslot\messngr , В случае, если уже какая-нибудь служба (сообщений или попап) работает, то вернётся ошибка. По каждому срабатыванию таймера вызываем GetMailSlotInfo(MailslotHandle, NIL, NextMsgSize, @MsgCount, NIL); для определения размера ящика, а затем (если NextMsgSize>5) вызываем ReadFile(MailslotHandle, PChar(NewLine)^, NextMsgSize, MsgSize, nil); То, что считалось, - строка в формате строка From,#0,строка To,#0,строка Msg. Если же NextMsgSize<5, То это левый NextMsgSize, поэтому просто фиктивно читаем его для удаления из ящика ReadFile(MailslotHandle, DummyBuffer, NextMsgSize, MsgSize, nil); P.S. И да простят меня Админы за презренные Дельфийские строки, ибо так нагляднее 937565678__netsend.dpr
Теперь получившемуся приложению нужно придать переносимость... Вообще я не знаю, работает ли в Линукс служба сообщений? Если да то, как отправить и принять сообщение в этой операционной системе?
Наверняка она там есть, но не на NETBEUI. Правда я видел какую-то поделку, умеющую посылать сообщения, но увы не помню названия. А про переносимость ты уже почти ответил : надо smtp/pop3 использовать - это универсально, но медленно. Либо закладываться на что-то подобное ICQ, но без серверов, с открытым кодом и портабельное. Winpopup вряд ли тебе подойдет, т.к. в NT и 98-м они совсем по-разному сделаны, IMHO. В NT нет ящика, а есть очередь.
Почтовые ящики - не в том смысле, что что-то@что-то.ru. Это такой механизм обмена данными между программами, работающими на одном или разных компьютерах. Это во-первых, во вторых я нашёл ссылку, в которой автор предлагал исходник программы под Виндовс и Линукс, которая мне и нужна (в Линукс, по описанию использовался SMB). Я послал письмо с предложением выслать мне копию, а он послал письмо, где послал меня. Точнее послал не он, а админы. Содержание непонятно, но ясно, что ответа я не дождусь... А требования таковы: сообщения, посылаемые из-под Линукс моей программой должны ловиться в Виндовс обычным попапом и наоборот... Т.е. не факт, что клиент и сервер (если можно так их назвать) - моих рук дело (в противном случае я не обращался бы сюда) P.S. Новая версия с исправленным багом _1063908822__netsend.dpr
В чистом Линуксе SMB нет - его реализует приложение Samba. Если тебя это устраивает, тогда проблем нет, т.к. Samba вроде даже с текстами распространялась.... Было какое-то приложение, которое из Виндов в Линуксовую систему сообщения посылала, но там другой протокол вроде.
"проблем нет" проблема есть, и её я сформулировал. Если её решение тебе очевидно, то пожалуйста напиши его. P.S. А как вы так кавычки красиво ставите (в цитатах) и программный код оформляете. Нигде про это не написано, а я тоже так хочу.
dmit10 Так правильно, если только спрашивать и не смотреть по сторонам, можно вообще все пропустить. Смотри : "Ваш ответ", куча "украшателей", а в конце то ,что ты пропустил - "Что это?" Ведь под самым носом положили...