ЛАН мессанджер

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by tip4il, 28 Apr 2007.

  1. tip4il

    tip4il Elder - Старейшина

    Joined:
    2 Oct 2006
    Messages:
    43
    Likes Received:
    8
    Reputations:
    0
    посоветуйте как реализовать на делфи ЛАН мессанджер.
     
  2. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    259
    Likes Received:
    596
    Reputations:
    476
    Если реализовывать без всякой клиентской части, то речь пойдёт о отсылке, подобной net send.

    Code:
    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 может включать в себя символы перевода на новую строку.
     
    _________________________
    2 people like this.
  3. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    а можно бродкастить по удп, и не нужно никаких серверов и ничго подобного
     
    2 people like this.
  4. tip4il

    tip4il Elder - Старейшина

    Joined:
    2 Oct 2006
    Messages:
    43
    Likes Received:
    8
    Reputations:
    0
    можно поподробнее
     
  5. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    netsend жалко, у всех уже выключена служба. Помню, и спамили так =)
     
  6. tip4il

    tip4il Elder - Старейшина

    Joined:
    2 Oct 2006
    Messages:
    43
    Likes Received:
    8
    Reputations:
    0
    мнеб желательно не через netsend
     
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    сетевой транспорт: udp; прога которая стоит у каждого в локалке, отправляет пакет на бродкаст адрес этой подсети. т.е. если у тебя адрес 192.168.0.32 то прога шлет на 192.168.0.255. все тачки подсети получат этот пакет. в свою очередь удаленные юзеры получают инфу от тебя и ффсе... далее как реализуешь формат пакета. например НИК:СООБЩЕНИЕ итд итп.
     
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    хм. Есть много кульных программ. НА крайняк можно заюзать чтото типа SeChat'a
    И зачем изобретать лисапед :)