Ver Mensaje Individual
  #1  
Antiguo 24-09-2018
Avatar de Maniches
Maniches Maniches is offline
Miembro
 
Registrado: nov 2012
Ubicación: Lima - Perú
Posts: 67
Reputación: 13
Maniches Va por buen camino
Lightbulb Migración de componente TTcpClient a TClientSocket

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.
__________________
Maniches
maniches@outlook.com
Responder Con Cita