PDA

Ver la Versión Completa : Migración de componente TTcpClient a TClientSocket


Maniches
24-09-2018, 17:16:34
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:


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.


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. ^\||/ :)