Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   ЛАН мессанджер (https://forum.antichat.xyz/showthread.php?t=39043)

tip4il 28.04.2007 01:18

ЛАН мессанджер
 
посоветуйте как реализовать на делфи ЛАН мессанджер.

begin_end 28.04.2007 02:13

Если реализовывать без всякой клиентской части, то речь пойдёт о отсылке, подобной net send.

Код:

function WTD(AText:string):string;
var PText : PChar; MaxLength : integer;
begin
 MaxLength:=length(AText)+1;
 PText:=StrAlloc(MaxLength);
 StrPCopy(PText,AText);
{$IFDEF WIN32}
 CharToOEM(PText,PText); {32Bit}
{$ELSE}
 AnsiToOEM(PText,PText); {16Bit}
{$ENDIF}
 Result:=StrPas(PText);
 StrDispose(PText);
end;

procedure SendNetMessage(AHost, AFromSt, AToSt, AMessageSt: string);
var
 hSlot : THandle;
 s    : string;
 cb    : DWORD;
 begin
  hSlot := CreateFile(PChar('\\'+AHost+'\mailslot\messngr'),
  GENERIC_WRITE, FILE_SHARE_READ, 0,
  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if hSlot <> INVALID_HANDLE_VALUE then
  begin
  AFromSt:=WTD(AFromSt);
  AToSt:=WTD(AToSt);
  AMessageSt:=WTD(AMessageSt);
  s := AFromSt + #0 + AToSt + #0 + AMessageSt + #0;
  cb := length(S);
  WriteFile(hSlot, s[1], cb, cb, 0);
  CloseHandle(hSlot);
  end;
end;

Использовать так: SendNetMessage('имя_компа','от_кого' ,'кому','текст_сообщения');
Первый параметр не может быть IP-адресом, 2 и 3 могут пустовать. 4 может включать в себя символы перевода на новую строку.

sn0w 28.04.2007 11:54

а можно бродкастить по удп, и не нужно никаких серверов и ничго подобного

tip4il 28.04.2007 20:59

Цитата:

а можно бродкастить по удп, и не нужно никаких серверов и ничго подобного
можно поподробнее

gizmo 28.04.2007 21:11

netsend жалко, у всех уже выключена служба. Помню, и спамили так =)

tip4il 28.04.2007 21:23

мнеб желательно не через netsend

sn0w 02.05.2007 18:29

сетевой транспорт: udp; прога которая стоит у каждого в локалке, отправляет пакет на бродкаст адрес этой подсети. т.е. если у тебя адрес 192.168.0.32 то прога шлет на 192.168.0.255. все тачки подсети получат этот пакет. в свою очередь удаленные юзеры получают инфу от тебя и ффсе... далее как реализуешь формат пакета. например НИК:СООБЩЕНИЕ итд итп.

slesh 02.05.2007 18:35

хм. Есть много кульных программ. НА крайняк можно заюзать чтото типа SeChat'a
И зачем изобретать лисапед :)


Время: 17:33