Ir al contenido


Foto

Migración de componente TTcpClient a TClientSocket

TTcpClient TClientSocket

  • Por favor identifícate para responder
No hay respuestas en este tema

#1 Manuel Peña

Manuel Peña

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 24 septiembre 2018 - 09:15

Hola Amigos del Foro,

aquí agrego y acudo a su experiencia y conocimiento.

Estoy validando migrar un pequeño modulo hacia una versión mas actualizada de Delphi. El detalle que tan solo se tiene los fuentes de la parte del cliente y no del servidor que se asume esta usando un servidor (TTcpServer) este aplicativo fue implementado por un proveedor y es una caja negra.

La pregunta y la ayuda es la siguiente: Se quiere ver la posibilidad de migrar la parte de cliente en una versión mas reciente de delphi. como sabemos la nueva versión ya no utiliza los componentes TTcpClient, TTcpServer y actualmente se usa TClientSocket, TServerSocket. Como les mencionaba la parte del servidor es una caja negra. 

La parte del cliente que esta configurada es la siguiente:

Código Delphi
var
  iLen1, iLen2, sResult  : Integer;
  BufHost, BufRcvd    : Array[0..4096] of Char;
begin
  TcpClient1.RemoteHost := '255.255.255.0';
  TcpClient1.RemotePort := '9999';
  TcpClient1.Open;
  if TcpClient1.Connected = False then
  begin
    LenRcvd:= TcpClient1.SendBuf(BufHost,iLen1);
  ...
  while TcpClient1.WaitForData(50000) = true do
  begin
    ...
    sResult:= TcpClient1.ReceiveBuf(BufRcvd, iLen2);
  end;   
  ...
  end;    
end;

Yo he intentado hacer algo similar con los nuevos componentes pero no me esta funcionando ya que el aplicativo que recibe los mensajes muestra los mensajes de Ingreso y Salida, pero parece que no esta enlazando y no esta enlazando. 

Código Delphi
var
  cltsckCliente : TClientSocket;
  iLen1, iLen2, sResult  : Integer;
  BufHost, BufRcvd    : Array[0..4096] of Char;
  ssTemp: TWinSocketStream;  
begin
  cltsckCliente.Address:= '255.255.255.0';
  cltsckCliente.Host   := '255.255.255.0';
  cltsckCliente.Port   := '9999';
  cltsckCliente.Open;
  if cltsckCliente.Socket.Connected then
  begin   
    lenRcvd:= cltsckCliente.Socket.SendBuf(BufHost, iLen1);

    ssTemp := TWinSocketStream.Create(cltsckCliente.Socket, 180000);

    while ssTemp.WaitForData(50000) = true do
    begin
      LenRcvd := cltsckCliente.Socket.ReceiveBuf(BufRcvd, iLen2);
      ...
    end; 
  end; 
end;

Amigos del foro es posible trabajar con los componentes TClientSocket --> TTcpServer que estos se enlacen y haya comunicación entre ellos? Si es posible esto pueden ayudarme indicándome si hay algún error en el código que les muestro? que sugerencias y/o ejemplos pueden compartir para hacer la prueba.

Muchas gracias de antemano. DeAcuerdo.gif smile.gif

  • 0




IP.Board spam blocked by CleanTalk.