Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2007
Mike Deet Mike Deet is offline
Miembro
 
Registrado: nov 2007
Posts: 12
Poder: 0
Mike Deet Va por buen camino
UDP send jpg

ola

tenho um problema quando tento enviar uma stream por udp ~

o codigo é o sueguinte

Código Delphi [-]
procedure TForm1.ButtonSendClick(Sender: TObject);
var
MyStream: TmemoryStream;
Begin
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.RemoteHost := Edit1IP.Text;
NMUDP1.RemotePort := StrToInt(Edit2port.Text);
MyStream := TmemoryStream.Create;
try
jpg.JPEGNeeded;
jpg.SaveToStream(MyStream);
NMUDP1.Sendstream(MyStream);
finally
MyStream.Free;
end;

e o erro que da

"write of address 0x00030ffc"

utilizo borland delphi 5

Última edición por dec fecha: 17-11-2007 a las 16:37:53.
Responder Con Cita
  #2  
Antiguo 17-11-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Smile FastNet tiene errores. Usa Indy

Hola,

Los NMUDP forman parte del paquete Fast Net. Este paquete de Delphi 5 tiene muchos errores.

Aunque hay cosas que funcionan bien, en general dado sus errores y el hecho de que fué descontinuando, lo mejor es no usarlo. En su lugar, puedes usar Indy. La versión que yo uso para Delphi 5 es la versión 9.0.18. Puedes descargarla de esta página.

http://www.indyproject.org/Sockets/D.../Indy9.EN.aspx

Yo envío con frecuencia JPG usando Indy. Si necesitas un ejemplo me puedes escribir.

En particular, actualmente lo único que uso de FastNet son los NMSMTP; pero aún esos estoy por migrarlos a Indy para no tener dos tecnologías, ya que en lo demás me he visto obligado a usar Indy

Suerte
Responder Con Cita
  #3  
Antiguo 18-11-2007
Mike Deet Mike Deet is offline
Miembro
 
Registrado: nov 2007
Posts: 12
Poder: 0
Mike Deet Va por buen camino
Hola

poderias enviar um exemplo para ver como funciona

Saludos
Responder Con Cita
  #4  
Antiguo 18-11-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Smile Un ejemplo de envío JPG con Indy

Hola,

Bueno, para enviar un archivo desde un cliente a un servidor Web usando Indy debes hacer lo siguiente:

1. Crea un módulo de datos (TDataModule)

2. Colocale un componente TidHTTP (está en la pestaña Indy Clients, creada en el IDE de Delphi por la instalación de Indy)

3. Colocale un componente TIdAntiFreeze, en la pestaña Indy Misc. (este solo es para evitar la "congeladas" típicas de internet, no se usa en el envío en sí)

4. Para nuestro ejemplo, llamemos dmWeb al TDataModule e idConexion al TidHTTP.

5. Descarga la unidad llamada MsMultiPartFormData. La puedes descargar en este enlace:

http://www.pudn.com/downloads49/sour...ail166574.html

Esta es una página en chino; probablemente tú navegador te preguntará si quieres instalar caracteres chinos; puedes decirle que no. Verá al tope de la misma el texto "IndyMultipartFormData" y al lado una flecha verde. Usa esa flecha para descargar un punto Zip que contiene un ejemplo del uso de esta unidad; pero lo que interesa es solo la unidad en sí que es muy pequeña.

6. Ahora agrega la unidad MsMultiPartFormData a tú proyecto y a la clausula Uses de tú TDataModule

7. Finalmente crea un método cuya apariencia es la siguiente:

Código Delphi [-]
Procedure TdmWeb.GrabarImagen(ACode,AFileName:String);
Var
   TheURL:              String;
   ResponseStream:      TMemoryStream;
   MultiPartFormDataStream: TMsMultiPartFormDataStream;
Begin
     TheURL                  := 'http://localhost/MiDirectorio/Miservidor.dll/MiAccion';
     MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
     ResponseStream          := TMemoryStream.Create;
     try
        idConexion.Request.ContentType := MultiPartFormDataStream.RequestContentType;
        { Agrega cada dato a enviar }
        MultiPartFormDataStream.AddFormField('ELCODIGO', ACode);
        MultiPartFormDataStream.AddFile('ELARCHIVO', AFileName, 'image/jpg');
        { Prepara el envío. Esto es obligatorio }
        MultiPartFormDataStream.PrepareStreamForDispatch;
        MultiPartFormDataStream.Position := 0;
        { Envía los datos }
        idConexion.Post(TheURL,MultiPartFormDataStream, ResponseStream);
     finally
        MultiPartFormDataStream.Free;
        ResponseStream.Free;
     end;
End;

Este ejemplo envía una imagen JPG; pero puedes aplicarlo a otros tipos de archivo. Como te podrás dar cuenta. El asunto es solo cosa de cambiar el parámetro 'image/jpg' por el adecuado para tú archivo

Ahora bien, la línea que hace referencia al campo 'ELCODIGO' no es necesaria. La coloco solo para ilustrar el hecho que junto al archivo se pueden enviar otros datos como campos normales. De hecho se pueden enviar varios archivos a la vez. Creo que es claro que agregar un campo es usar un AddFormField y agregar un archivo es usar un AddFile

Lógicamente, el valor "ELARCHIVO" es para dar un nombre al archivo que se envía y el valor AFileName es el nombre de la ruta completa del archivo en el equipo cliente.

Me comentas si necesitas ayuda del lado del servidor

Suerte
Responder Con Cita
  #5  
Antiguo 18-11-2007
Mike Deet Mike Deet is offline
Miembro
 
Registrado: nov 2007
Posts: 12
Poder: 0
Mike Deet Va por buen camino
muchas gracias
Responder Con Cita
  #6  
Antiguo 18-11-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Smile Un placer

Cita:
Empezado por Mike Deet Ver Mensaje
muchas gracias
Es un placer ayudar. No olvides contarme si todo te funciona bien
Responder Con Cita
  #7  
Antiguo 18-11-2007
Mike Deet Mike Deet is offline
Miembro
 
Registrado: nov 2007
Posts: 12
Poder: 0
Mike Deet Va por buen camino
hola
o teu codigo utiliza o protocolo HTTP e eu queria utilizar o protocolo UDP

o meu codigo

procedure TForm1.ButtonSendClick(Sender: TObject);
var
MyStream: TmemoryStream;
Begin
IdUDPServer1.Active:=true;
MyStream:=TMemoryStream.Create;
MyStream.Position:=0;
IdUDPClient1.Host:=Edit1IP.Text;
IdUDPClient1.Port:=strtoint(Edit2port.Text);
jpg.JPEGNeeded;
jpg.SaveToStream(MyStream);
IdUDPClient1.SendBuffer(MyStream.memory^,MyStream.size)
end;

mas da um erro ao tentar enviar

message too long

Saludos
Responder Con Cita
  #8  
Antiguo 18-11-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
No he usado UDP; pero quizás esto ayude

Hola,

Lo siento, yo no he usado nunca el protocolo UDP y no tengo en este momento el tiempo para investigarlo. Sin embargo, recordaba haber leído algo de que hay que hacer ajustes al tamaño del buffer y buscando en Internet me encontré este artículo:

http://delphi.about.com/od/adptips2005/qt/udpvstcp.htm

Espero que te ayude en algo.

Supongo que tendrás tús razones para usar UDP; pero si puedes utilizar
HTTP, te diré que el método que te expliqué en mi ejemplo lo uso frecuentemente para enviar a un servidor docenas de imagenes y planos, y nunca he tenido problemas, así que puedes considerarlo como muy confiable.

Suerte
Responder Con Cita
  #9  
Antiguo 18-11-2007
Mike Deet Mike Deet is offline
Miembro
 
Registrado: nov 2007
Posts: 12
Poder: 0
Mike Deet Va por buen camino
muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar mensajes NET SEND DanForever Internet 0 29-05-2006 15:11:20
Sore Net Send yusnerqui Varios 2 25-05-2005 17:41:23
Net send con Windows XP con SP2 lgarcia Windows 2 03-01-2005 15:25:56
Net send aram2r Internet 0 01-04-2004 14:00:03
capturar el evento de net send aram2r Internet 0 11-02-2004 17:03:08


La franja horaria es GMT +2. Ahora son las 03:38:51.


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