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 04-08-2015
osmeg osmeg is offline
Miembro
NULL
 
Registrado: may 2014
Posts: 18
Poder: 0
osmeg Va por buen camino
Buenas noches Dec,

De antemano gracias por el recurso compartido de transferencia de archivos. Me tome el atrevimiento de tomar el código que adjuntaste para revisar su comportamiento porque necesito realizar algo similar. Sin embargo, a pesar de que realizo los pasos tal cual como los indicas en un mensaje anterior para el envío de archivos, no logro que se cree el archivo b.txt (ni en el computador local como en otro de la misma red). Sé que esta discusión es algo avanzada (llevo poco programando Delphi) pero me gustaría poder realizar esa transferencia de archivos. No he modificado el código que adjuntaste.

Con respecto al problema, el código indicado en la parte inferior perteneciente al método ServerClientRead. Este código nunca es ejecutado porque la cadena s llega vacía, pero no encuentro el motivo.

Código Delphi [-]
    if s <> '' then
    begin
    t := TStringList.Create();
    try
      t.Text := s;
      t.SaveToFile( 'b.txt' );
    finally
      t.Free();
    end;

    SLog( 'Server Client Read Received ' );
    end;

Entiendo que este post es un poco viejo pero agradezco si me puedes orientar en algun paso adicional que sea necesario realizar para que la transferencia del archivo sea satisfactoria.
Responder Con Cita
  #2  
Antiguo 04-08-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Probando el archivo adjunto de mi último mensaje el ejemplo no parece funcionar bien, al menos aquí en Windows 10. Sin embargo, probando el programa en que estoy usando "Sockets" y que originó este hilo sí que puedo enviar y recibir cadenas de un cliente a un servidor y viceversa. Lo cierto es que ahora mismo on sabría bien qué responderte. Quizá el código de abajo, usado en mi programa, te dé una idea y te sirva de algo:

Código Delphi [-]
unit USocketsCommom;

{
  The code of this unit is mainly based in Socket's
  related code found on Internet and who's author
  is Remy Lebeau, a TeamB team and Delphi developer.
}

interface

uses
  ScktComp;

procedure SendStringToSocket( Socket:
 TCustomWinSocket; Buffer: string );

implementation

uses
  Forms, SysUtils, Classes, WinSock;

procedure SendMemoryStreamToSocket( socket :
 TCustomWinSocket; buffer : TMemoryStream);
var
  dataPtr: PByte;
  numSent: integer;
begin
  buffer.Position := 0;
  dataPtr := PByte( buffer.Memory );
  while buffer.Position < buffer.Size do
  begin
    numSent := socket.SendBuf
    (
      dataPtr^,
      buffer.Size - buffer.Position
    );

    if numSent < 0 then
    begin
      if WSAGetLastError() = WSAEWOULDBLOCK then
      begin
        Sleep( 50 );
        Continue;
      end;
      Exit;
    end;

    if numSent = 0 then
    begin
      Exit; // socket disconnected
    end;

    Inc(dataPtr, numSent);
    buffer.Seek(numSent, soFromCurrent);
    Application.ProcessMessages();
  end;
end;

procedure SendStringToSocket( socket:
 TCustomWinSocket; buffer: string );
var
  ms : TMemoryStream;
begin
  ms := TMemoryStream.Create();
  try
    ms.WriteBuffer( Pointer( buffer )^, Length( buffer ) );
    SendMemoryStreamToSocket( socket, ms );
  finally
    ms.Free();
  end;
end;

end.

Ese es el código que uso en mi programa para enviar cadenas en ambos cliente y servidor. Dicho código parece el resumen de este hilo, en el sentido de que es el que al final estoy usando en mi programa, y, como digo, este funciona como se espera incluso aquí en Windows 10.
__________________
David Esperalta
www.decsoftutils.com
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
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Firebir y usar "IF" en la clausula "SELECT" papulo SQL 6 25-07-2006 21:38:04


La franja horaria es GMT +2. Ahora son las 18:11:10.


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