Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2011, 06:20
epcode
 
Fecha de Ingreso: septiembre-2010
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Sockets en php (chat) - Pasos

Buenos días;
Necesito hacer un chat en php, que envíe cadenas de texto entre los usuarios conectados... Estuve leyendo sobre consultas anteriores relacionadas al tema; pero no me queda claro lo siguente:
El servidor de chat tiene que hacer lo siguiente:
Cita:


1° Crear el socket
  • socket_create()

2° Vincularle una IP y un puerto (bind)
  • socket_bind()

3° Dejar que este socket escuche las conexiones (listen)
  • socket_listen()

4° Aceptar las conexiones escuchadas (accept)
  • socket_accept()

5° Escribir y Leer Informacion (read & write)
  • socket_read()
  • socket_write()

6° Cerrar las conecciones (socket close)
  • socket_close()

La aplicación cliente; tiene que hacer lo siguiente:

Cita:


1° Crear el socket
  • socket_create()

2° Vincularle una IP y un puerto (bind)
  • socket_bind()

3° Conectar al socket (connect)
  • socket_connect()

4° Tener un bucle infinito en el que se envie y reciba la info (read & write)
  • socket_read()
  • socket_write()

5° Cerrar las conexiones (close socket)
  • socket_close()

Ahora bien; si lo citado arriba es correcto y no me saltíe ningun paso... ¿Como organizar esto en php?

Redacto un archivo server_chat.php que se ocupe de ralizar las tareas del servidor; y en la parte del chat (La parte gráfica) coloco el script del cliente?

Funciona esto así como una aplicacion cliente/servidor (?) Ej:

APLICACIÓN CLIENTE/SERVIDOR EN PYTHON
Cita:
Código:
Cliente:

#!/usr/bin/env python

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost',8000))
while 1:
        data = raw_input('>')
        clientsocket.send(data)
        if not data: break
        newdata = clientsocket.recv(1024)
        print newdata
clientsocket.close()

-----------------------------------------------------------------------------------------
Servidor:

#!/usr/bin/env python

import socket


serversocket    =   socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8000))
serversocket.listen(1)
clientsocket, clientaddress = serversocket.accept()
print 'Conexion desde: ', clientaddress
while 1:
        data = clientsocket.recv(1024)
        if not data: break
        clientsocket.send(data)
clientsocket.close()