Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/11/2009, 06:54
Avatar de maycolalvarez
maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 18 años, 2 meses
Puntos: 1532
Respuesta: Enviar XML por socket y recibir respuesta XML

el ejemplo básico del socket cliente en el manual de php te sirve, sólo debes cambiarle el servidor, el puerto, etc. te traerá el resultado como un string y luego podrías usar una libreria para interpretar el xml (expat, SimpleXML:"solo php5"). Suerte!:

Código PHP:
<?php
error_reporting
(E_ALL);

echo 
"<h2>Conexi&oacute;n TCP/IP</h2>\n";

/* Obtener el puerto para el servicio WWW. */
$puerto_servicio = getservbyname('www', 'tcp');

/* Obtener la direccion IP del host de destino. */
$direccion = gethostbyname('www.example.com');

/* Crear un socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (
$socket < 0) {
    echo 
"socket_create() fall&oacute;: motivo: " . socket_strerror($socket) . "\n";
} else {
    echo 
"OK.\n";
}

echo 
"Intentando una conexi&oacute;n con '$direccion' en el puerto '$puerto_servicio'...";
$resultado = socket_connect($socket, $direccion, $puerto_servicio);
if (
$resultado < 0) {
    echo 
"socket_connect() fall&oacute;.\nMotivo: ($resultado) " .
         
socket_strerror($resultado) . "\n";
} else {
    echo 
"OK.\n";
}

$entrada = "HEAD / HTTP/1.1\r\n";
$entrada .= "Host: www.example.com\r\n";
$entrada .= "Connection: Close\r\n\r\n";
$salida = '';

echo 
"Enviando petici&oacute;n HTTP HEAD...";
socket_write($socket, $entrada, strlen($entrada));
echo 
"OK.\n";

echo 
"Leyendo respuesta:\n\n";
while (
$salida = socket_read($socket, 2048)) {
    echo 
$salida;
}

echo 
"Cerrando socket...";
socket_close($socket);
echo 
"OK.\n\n";
?>