Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comunicación entre equipos en red (https://www.clubdelphi.com/foros/showthread.php?t=13254)

raxsys 11-08-2004 20:52:54

Comunicación entre equipos en red
 
Hola, es la primera vez que hago una pregunta en este foro. Necesito hacer un programa que en primer lugar me liste todos los equipos conectados a mi red. En cada equipo estaría instalado mi programa y desde la lista poder enviar entre ellos no solo texto (como en chat), sino también imagenes, el contenido de un treeview, o tal vez intercambiar archivos. No tengo la mas menor idea de como hacerlo, ojala alguien pueda ayudarme. Gracias.

Neftali [Germán.Estévez] 12-08-2004 09:17:05

Cita:

Empezado por raxsys
(1) Necesito hacer un programa que en primer lugar me liste todos los equipos conectados a mi red.
(2) En cada equipo estaría instalado mi programa
(3) desde la lista poder enviar entre ellos no solo texto (como en chat), sino también imagenes, el contenido de un treeview, o tal vez intercambiar archivos.

Buenas.
El (1) no es problema, es sencillo. Puedes mirar trucos 319, 272 de trucomanía, tal vez te sirvan. O tb puedes probar ésta rutina:

Código Delphi [-]
var
  Computer                 : Array[1..500] of String[25];
  ComputerCount            : Integer;
 
procedure FindAllComputers(Workgroup : String);
  Var
    EnumHandle                : THandle;
    WorkgroupRS               : TNetResource;
    Buf                       : Array[1..500] of TNetResource;
    BufSize                   : Cardinal;
    Entries                   : Cardinal;
    Result                    : Integer;
  begin
    ComputerCount := 0;
    Workgroup := Workgroup + #0;
    FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
    With WorkgroupRS do begin
      dwScope := 2;
      dwType := 3;
      dwDisplayType := 1;
      dwUsage := 2;
      lpRemoteName := @Workgroup[1];
    end;
    WNetOpenEnum( RESOURCE_GLOBALNET,
                  RESOURCETYPE_ANY,
                  0,
                  @WorkgroupRS,
                  EnumHandle );
    Repeat
      Entries := 1;
      BufSize := SizeOf(Buf);
      Result :=
       WNetEnumResource( EnumHandle,
                         Entries,
                         @Buf,
                         BufSize );
     If (Result = NO_ERROR) and (Entries = 1) then begin
        Inc( ComputerCount );
        Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
      end;
    Until (Entries <> 1) or (Result <> NO_ERROR);
    WNetCloseEnum( EnumHandle );
  end;  { Find All Computers }
El (2) tampoco, sólo necesitas haber acabado ya el programa.
Yo empezaría por el (3); Me parece que vas a tener que utilizar Sockets; Puedes empezar a mirar las Indy, creo que por ahí anda una demo de un Chat, míratelo, creo que es un buen punto de partida, a partir de ah´se trata de ampliarlo a tus necesidades.

raxsys 12-08-2004 17:23:37

Gracias, pero aún tengo dudas...
 
Gracias Neftalí, te cuento que busqué aquellos trucos pero no me sirvieron mucho, pero el procedimiento que me enviaste es realmente bueno, pero tengo un problema, requiere como parámetro el grupo de trabajo a listarse, y cómo puedo hacer para que revise en absolutamente todos los grupos o talvez, una forma de listar todos los grupos. En otras palabras, necesito saber todas las computadoras conectadas a la red en todos los grupos de trabajo.

Luego, halle unos cuantos ejemplos de chat pero lo que en realidad necesito, aparte de enviar mensajes cortos entre las aplicaciones, es que puedan por ejemplo, si en un equipo tengo un timage con cierta imagen, poder compartirla y poder verla desde el otro equipo, lo mismo con otros componentes; por otro lado, necesito hacer un intercambio de archivos directamente.

Se que suena latoso, pero en verdad agradeceré mucho la ayuda, como dije, soy novato en esto y no se a qué me he metido.

Gracias.

jachguate 12-08-2004 17:59:13

Para enviar archivos e imágenes, podes valerte, como ya te han dicho, de las indy (TidTCPClient), que tienen un método WriteStream con el que podes enviar cualquier cosa que pueda ponerse en un stream (en principio, cualquier archivo via TFileStream, o imagen via TMemoryStream, etc).

Creo que es una buena idea que descargues las demos de las indy (http://www.indyproject.org), y te des una vuelta por el chat, idTCPDemo y el TCPStreamClientServer.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 12:59:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi