Tema: Indy y Modem
Ver Mensaje Individual
  #8  
Antiguo 19-05-2003
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: may 2003
Ubicación: Locombia papá!
Posts: 267
Reputación: 22
diegofhernando Va por buen camino
Esta bien amigos... pues ahi tienen el codigo que necesitan para enviar un archivo de un pc a otro:

Lo que utilizo son los componentes TNMStrm y TNMStrmServ de NetMasters... la etiqueta FastNet del IDE de Delphi. Deben poner el TNMStrmServ en la aplicación que recibira el archivo y obviamente el TNMStrm en la que lo envía... claro si desean enviar y recibir desde cualquier aplicación deberán incluir los 2.

Bien estos componentes funcionan con Streams (TMemoryStream o TFileStream), entonces depende de como queremos cargarlos... supongamos que enviaremos una imagen JPEG:

procedure TForm1.Button1Click(Sender: TObject);
var
str: TMemoryStream; //Stream donde cargaremos la imagen
mi_jpeg: TJPEGImage;
begin

mi_jpeg:=TJPEGImage.Create;
mi_jpeg.LoadFromFile('C:\imagen.jpg'); //cargamos la imagen
str:= TMemoryStream.Create; // iniciamos nuestro Stream
mi_jpeg.SaveToStream(str); //asignamos la imagen al Stream
NMStrm1.Host:='192.168.0.1'; // IP del PC donde enviaremos
NMStrm1.PostIt(str); // enviamos el stream
str.Free; //liberamos el stream
mi_jpeg.Free; // liberamos el JPEG


end;


Como se estarán imaginando de esta forma podrian capturar y enviar la captura de la pantalla del usuario.

Solo nos resta el codigo para el PC que recibirá el Stream... Obviamente usamos el componente NMStrmServ que tiene el evento OnMsg que se ejecuta cuando se hace un PostIt desde un NMStrm:


procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream);

{fijense como en la declaracion de este procedimiento tenemos como parametro un TStream, por esta razon no tendremos que crear un Stream propio para nuestra imagen. Solo lo usamos.}

var
mi_jpeg: TJPEGImage; //nuestra imágen

begin

mi_jpeg:= TJPEGImage.Create;
mi_jpeg.LoadFromStream(strm);

end;

eso es todo si desean mostrar la imagen pues simplemente a un componente TImage le asignan el JPEG y listo... Se que les servirá el codigo y no solo a Ustedes si no a mas gente del foro, esa es la idea. Y pues mi problema y espero que me colaboren es el siguiente:

Estoy conectando los PC's con los ICS (componentes para el manejo de Winsock, igual que los INDY), el incoveniente es que cuando un PC cliente se bloquea algo dificil de suceder en WINDOWS pues no se desconecta del servidor y cuando ingresa nuevamente pues genera un error que algunas veces me tira el servidor y desconecta a todo el mundo... pues no se que hacer e intentado validar la entrada de cada cliente pero no funciona...

Salu2 desde Colombia...


__________________
Diego. Colombia es pasión.
Responder Con Cita