server
Código PHP:
#!/usr/bin/php
<?php
/*
Ejemplo 3. Serividor socket en php que acepta conexiones
*/
// ELIMITANDO EL TIEMPO LIMITE DE EJECUCIÓN DE UN SCRIPT (DEFAULT 30s)
set_time_limit(0);
ob_implicit_flush();
// DEFINIENDO VARIABLES
$host = "192.168.0.10";
$puerto = "10001";
// ABRIENDO ARCHIVO DE LOG PARA LA ESCRITURA
$fp = fopen ("error.log", "a");
// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
if (!$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)){
$log = "Fallo en socket_create:".socket_strerror($socket)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ASOCIANDO HOST Y PUERTO AL SOCKET
if (!$bind = @socket_bind($socket, $host, $puerto)){
$log = "Fallo en socket_bind:".socket_strerror($bind)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ESCUCHANDO LA CONEXIÓN DEL SOCKET
if (!$bind = @socket_listen($socket, 3)){
$log = "Fallo en socket_listen:".socket_strerror($bind)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ACEPTANDO LAS CONEXIONES SOCKET
while (TRUE) {
if (!$accept = @socket_accept($socket)){
$log = "Fallo en socket_accept:".socket_strerror($accept)."\n";
fwrite ($fp, $log);
print "Fallo al aceptar conexiones\n";}
// MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
$buffer = "\nConexión realizada\n";
// ESCRIBIMOS EN EL SOCKET EL MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
if (!@socket_write($accept, $buffer)){
$log = "Fallo al escribir en socket";
fwrite ($fp, $log);}
}
?>
Código PHP:
#!/usr/bin/php
<?php
/*
Ejemplo 2, conexión via socket
*/
// DEFINICIÓN DE VARIABLES
$puerto = 10001;
$host = "192.168.0.10";
// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$conexion = socket_connect($socket, $host, $puerto);
// DEFINICIÓN DE VARIABLES
$buffer = "helo $host\r\n";
$salida = ' ';
// ESCRIBIENDO EL BUFFER EN EL SOCKET
socket_write($socket, $buffer);
// LEYENDO RESPUESTA DEL SOCKET
print "leyendo...\n";
while ($salida = socket_read($socket, 2048)){
echo $salida;}
// CERRANDO LA CONEXIÓN
socket_close($socket);
?>