Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Tengo un socket server que envía un mensaje hacia un servidor que lo interpreta y devuelve otro mensaje de respuesta separando los campos por un enter (\n). Mi problema es que dependiendo de lo que devuelva el mensaje puede variar en tamaño, es decir, pueden venir "n" campos por consiguiente debo capturar cada dato en una variable diferente para luego yo interpretar dichos datos por ejemplo yo envío este mensaje.
Using text Syntax Highlighting
02170213NEM0|WS|VI|B|JRSYS|asdf5asdf5asdf5asdf5 |1411|1234|012||02281515|151520||00000000|151520|0100|003000|123456|123456|88888888|320|01|000|0|000000000|4568270128290512|00000000|000000011234|0|0|0|0|
Y al responder el servidor me devuelve esto, por ejemplo, si el mensaje fuera negativo:
Using text Syntax Highlighting
0
-32
TRANSMICION DUPLICADA
0.00
BU
94 TRANSACCION YA EXISTE (NUMERO REFERENCIA)
807424
-32
TRANSMICION DUPLICADA
0.00
BU
94 TRANSACCION YA EXISTE (NUMERO REFERENCIA)
807424
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Y esto por ejemplo si el mensaje fuera positivo:
Using text Syntax Highlighting
1
807424
APROBADA
201411
0.00
3456
17929.55
1802.19
17929.55
807424
APROBADA
201411
0.00
3456
17929.55
1802.19
17929.55
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Como verán, dependiendo de si es válido o no válido cambia la longitud del mensaje de respuesta.
Yo lo que necesito es imprimirlo en un archivo de registro que llevo de esta manera:
printf log_file "[$campo1|$campo2|$campo3|$campo4|$campo......|$campox]";
de donde las variables son
Using text Syntax Highlighting
1 = $campo1
807424 = $campo2
APROBADA = $campo3
201411 = $campo4
0.00 = $campo5
3456 = $campo6
17929.55 = $campo7
1802.19 = $campo8
17929.55 = $campo9
807424 = $campo2
APROBADA = $campo3
201411 = $campo4
0.00 = $campo5
3456 = $campo6
17929.55 = $campo7
1802.19 = $campo8
17929.55 = $campo9
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Hasta el momento llevo esto:
Using perl Syntax Highlighting
- sub EnviaMensaje {
- my $mensaje = shift;
- my $puerto = shift;
- $socketCliente = new IO::Socket::INET (
- PeerHost => "$IP",
- PeerPort => "$puerto",
- Proto => 'tcp',
- ) or die "ERROR in Socket Creation : $!\n";
- print $socketCliente "$mensaje\n";
- while (defined($respuesta = <$socketCliente>)) {
- chop $respuesta;
- @retorno = split("/\n/",$respuesta);
- if ( $respuesta eq "" ) {
- next;
- }
- printf log_file "RECEIVE:$respuesta\n";
- }
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
y me responde esto:
Using text Syntax Highlighting
RECEIVE: 00880
RECEIVE: -32
RECEIVE: TRANSMICION DUPLICADA
RECEIVE: 0.00
RECEIVE: BU
RECEIVE: 94 TRANSACCION YA EXISTE (NUMERO REFERENCIA)
RECEIVE: 807424
RECEIVE: -32
RECEIVE: TRANSMICION DUPLICADA
RECEIVE: 0.00
RECEIVE: BU
RECEIVE: 94 TRANSACCION YA EXISTE (NUMERO REFERENCIA)
RECEIVE: 807424
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
¿Me podrían ayudar, por favor? ¡Gracias, muy amables!