PDA

Ver la Versión Completa : Problema al recibir datos desde un socket cliente


Leviatan
05-03-2012, 22:29:51
Hola amigos:

Estoy utilizando Delphi 2010 y desarrollé un programita socket cliente (TIdTCPClient) que se ejecuta mediante la línea de comandos y que recibe cuatro parámetros, en este orden: IP Puerto Paquete ValorHexadecimal.

Ejemplo:

C:\cliente.exe 192.168.0.4 9998 S00312060000 0d

Donde 'S00312060000' es el Paquete y '0d' es el valor hexadecimal para la tecla ENTER.

Al depurar la aplicación el Delphi me muestra esto: 'S00312060000'#$D. #$D lógicamente es el carácter de control producto de la conversión de '0d' primeramente a decimal y luego a char, mediante la función chr().

Ahora, el problema viene cuando capturo el mensaje enviado con el Wireshak, ya que éste me muestra lo siguiente: '53 30 30 33 31 32 30 36 30 30 30 30 0d 0d 0a' y se debe recibir solamente lo que está en negrita '53 30 30 33 31 32 30 36 30 30 30 30 0d 0d 0a'. En síntesis se está recibiendo más de lo que se envía.

¿Cómo puedo lograr enviar solo lo que está en negrita?

Saludos.

Leviatan
08-03-2012, 20:16:46
Hola amigos:

Ya he solucionado el problema que tenía.

El punto estaba en que yo estaba usando el método "Writeln" y que éste, aparte del string en cuestión, envía un "\n" (0d0a, o lo que es lo mismo: #$D#$A). La solución estaba en usar el "Write":

var
Mensaje: string;
begin
...
ClienteTCP.Socket.Write(Mensaje);
...
end;

Quizás a alguien le interese saber la respuesta.

Saludos.