Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2010, 22:56
Avatar de DeeR
DeeR
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
De acuerdo Clase pserver - Servidor Listen Socket en PHP

En la red, no hay muchos recursos que hablen sobre listen socket en PHP como en otros lenguajes. Es verdad que el manejo de listen socket es mas eficiente en otros lenguajes como python, java o C/C++, pero es posible hacer servidores que escuchen en una ip y puerto en PHP.

Comparto mi clase pserver como base para realizar servidores en php, la cual es la encargada del socket en escucha, recibir clientes y encargarse de las peticiones de los clientes, lo ideal es extender la clase pserver y sobreescribir los metodos read y write para el uso que sea necesario.

La clase pserver la pueden descargar desde el articulo pserver o php-classes (y ademas me dejan un user ratings xD)

Tengo 4 ejemplos de uso de la clase pserver, tres de ellos extienden a la clase.

- Servidor echo MD5, si hace un telnet hacia el servidor y escribe alguna palabra, este responde el hash md5 de la palabra
- Servidor echo Base64, lo mismo que el anterior, pero usando la funcion base64_encode
- Servidor de Chat, Si se conectar al servidor (via telnet) pueden conversar con los otros usuarios conectados y ejecutar un par de comandos del chat (:clock :w :clear :funny )
- [b]Servidor Web , es una implementación muy pero muy básica de un servidor web, pero funciona
- Consola Shell Remota , Este ejemplo es mas controversial, ya que deja una consola /bin/sh en escucha en una determinada ip - puerto, pudiendo ejecutar comandos directamente en el servidor (los cuales se van a ejecutar con el usuario que corra el script, ejemplo nobody) e inclusive permite abrir y editar archivos con vim. Inclusive si tenemos acceso al interprete de python, podemos atachar una tty y realmente tener una consola donde podamos ejecutar comandos que necesiten de una tty (como top,passwd,etc....) sobre el servidor.

Para ejecutar los ejemplo se puede hacer directamente desde una consola o a traves de la web, recuerden que es posible que el servidor tenga los puertos filtrados, si es asi, no van a poder acceder a la ip-puerto ya que van a estar filtrados.

Para que conversemos sobre el tema de socket listen en php (ya que he trabajo son socket listen en otros lenguajes)

Saludos.