C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
передача сообщения по сети
grebenyk
Отправлено: 20.10.2006, 06:34


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Дорогие друзья, сталкнулся с такой проблемой: есть сеть из двух компов ( winnt и winxp), необходимо послать сообщение с одного на другой , типа net send , хотя почиму-то в xp оно у меня не работает(net send home hi). Все это применяется в моей проге , которая смотрит на одном компе наличие определенных файлов, а потом в случае отсутствия должен высветить на другом сообщение. А писать проги типа сервер клиент не хочется. Как обойтись одной прогой
AVC
Отправлено: 20.10.2006, 08:09


Ветеран

Группа: Модератор
Сообщений: 1583



CODE

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//          Послать сообщение по локальной сети
//---------------------------------------------------------------------------

#include <lm.h>

PACKAGE bool __fastcall AxSendNetMessage (const AnsiString &pTo_Name
          ,const AnsiString &pMessage
          )
{
if (pTo_Name.Trim().IsEmpty()) return false;
if (pMessage.Trim().IsEmpty()) return false;


char buf[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = sizeof(buf) — 1;
if (!GetComputerName(buf, &size)) return false;

WideString  From_Name (buf  );
WideString  To_Name (pTo_Name);
WideString  Message (pMessage);

// Не пробивают блокировку (все)

NetMessageBufferSend
(NULL        // LPTSTR servername,
,To_Name       // LPTSTR msgname (toname),
,From_Name       // LPTSTR fromname,
,(unsigned char*)Message.c_bstr() // LPBYTE buf,
,Message.Length()*2     // DWORD buflen
);

/*
// Дублируются (многократно)
AnsiString str ="\\" + AnsiString(To_Name) + "\mailslot\messngr";
HANDLE hSlot = CreateFile(str.c_str(),
   GENERIC_WRITE, FILE_SHARE_READ, NULL,
   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hSlot == INVALID_HANDLE_VALUE) ShowMessage("Can't open file");
else
{ char buf[] = "AVC<!--POST BOX-->TATYANA<!--POST BOX--> 222 asdfфыва<!--POST BOX-->";
DWORD  cb  = sizeof(buf);
CharToOemBuff(buf,buf,cb);
WriteFile(hSlot, buf, cb, &cb, NULL);
CloseHandle(hSlot);
}
*/

return true;
}
Konstantine
Отправлено: 20.10.2006, 10:07


Мастер участка

Группа: Модератор
Сообщений: 545



http://rxlib.ru/forums/index.php?act=ST&f=...b1a65775a2c1f81 cool.gif
Gedeon
Отправлено: 20.10.2006, 12:27


Ветеран

Группа: Модератор
Сообщений: 1742



Давно известна проблема когда на нт не работает нетсенд, тут дело не в программе.

Вернуться в Вопросы программирования в C++Builder