Foros del Web » Programando para Internet » PHP »

socket o chat php?????

Estas en el tema de socket o chat php????? en el foro de PHP en Foros del Web. hola escribo para hacer una consulta ,que tiene que ver con mi proyecto de grado. la verdad se muy poco de programación web ,estudie ing ...
  #1 (permalink)  
Antiguo 15/05/2011, 14:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
socket o chat php?????

hola escribo para hacer una consulta ,que tiene que ver con mi proyecto de grado.

la verdad se muy poco de programación web ,estudie ing electrónica y parte de mi proyecto final de carrera es tener una web donde equipos electrónicos muy básicos suban información a una pagina enlazada a una base de datos.

lo poco que he logrado lo he hecho con php ,creando socket tcp al cual los aparatos electrónicos que mencione mas arriba se conectan sin problema.sin embargo necesito que al mismo socket se conecten varios aparatos para subir datos. y hay viene el problema el socket básico que manejo no tiene esta función.

por lo cual pense en algo como un chat muy muy simple .pero tengo problemas debido a que los que consigo tienen otros lenguajes incorporados como flash y java.que por obvias razones un equipo que no es un computador y cuya unica funcion es conectarse a la internet al nivel mas básico no puede interpretar.

aclaro que la informacion que subo es muy simle ,texto plano y muy corto.

el socket y el chat son las únicas ideas que se me han ocurrido pero como ya dije no se mucho de programación web.si alguno de los foreros con mas experiencia me puede dar ideas que me ayuden se los agradeseria.
  #2 (permalink)  
Antiguo 15/05/2011, 14:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: socket o chat php?????

Se supone que con sockets no deberías tener problemas. ¿Vas a usar algún otro puerto al 80 o solamente vas a usar ese puerto? Verifica si este ejemplo de chat te puede brindar más luz con lo que deseas hacer http://www.forosdelweb.com/2813329-post33.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/05/2011, 15:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: socket o chat php?????

gracias por contestar tan rápido ,ya mire el ejemplo que me dio pero me va a llevar un tiempo.

sin embargo me llama la atención que me diga que no debería tener problemas con los sockets ,la cuestion del puerto si ,no uso puerto 80 (no se que tan importante sea eso) y de lo que he leído se que debo crear una matriz de sockets pero no lo entiendo no se si se puede hacer por el mismo puerto o si hay que cambiarlo .

y no he encontrado un ejemplo claro que lo ilustre .
  #4 (permalink)  
Antiguo 15/05/2011, 15:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: socket o chat php?????

Con sockets no debes tener problemas con cualquier puerto, solo es cuestion de indicarlo. Pero que haz hecho para que te podamos ayudar. Era que si ibas a usar el puerto 80 hay muchas formas de trabajar, como el ejemplo que te dije, pero vuelvo a indicarte que con cualquier puerto lo puedes lograr, solo es cuestion de indicarlo al socket y "escuchar" lo que vaya por él.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 15/05/2011, 15:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: socket o chat php?????

bueno el código que he conseguido es el siguiente

************************************************** ********


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body bgcolor="#CCCCCC" text="#0000FF"
<title>BIENVENIDO <br></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>



ESPERANDO CONEXION <br>



<?php



// ELIMITANDO EL TIEMPO LIMITE DE EJECUCIÓN DE UN SCRIPT (DEFAULT 30s)
set_time_limit(0);

ob_implicit_flush();
// DEFINIENDO VARIABLES
$host = "mi ip"; //ip del servidor
$puerto = "9500";

// ABRIENDO ARCHIVO DE LOG PARA LA ESCRITURA


// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
if (!$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)){
print "Fallo al iniciar el servidor paso1 \n";
exit;}

// ASOCIANDO HOST Y PUERTO AL SOCKET
if (!$bind = @socket_bind($socket, $host, $puerto)){
print "Fallo al iniciar el servidor paso2\n";
exit;}

// ESCUCHANDO LA CONEXIÓN DEL SOCKET
if (!$bind = @socket_listen($socket, 3)){
print "Fallo al iniciar el servidor paso3 \n";
exit;}



// ACEPTANDO LAS CONEXIONES SOCKET
//while (TRUE) {
if (!$accept = @socket_accept($socket)){
print "Fallo al aceptar conexiones paso4\n";}


echo "conexion realizada.<br>";

// 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)){
}


while(1){

$char=socket_read($accept,100);
echo "dato recibido $char .<br>";
if ($char=="+++")break;
}
//}
?>
</body>
</html>
************************************************** ****

la mayor parte es ctrl c y ctrl v pero ya entiendo la mayor parte del codigo ,el problema con este script es que solo acepta una conexión y tengo pensado tener unos 100 clientes conectados (dispositivos electrónicos ) a este socket y no se como discriminarlos y crear un canal de comunicación con cada uno.

espero haber sido claro .

gracias por la ayuda
  #6 (permalink)  
Antiguo 15/05/2011, 19:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: socket o chat php?????

Te recomiendo esta lectura que te explica paso a paso y detalladamente como trabajar con los socket, le di una lectura y hasta me dieron ganas de practicarlo http://devzone.zend.com/article/1086 Trata de no copiar y pegar solamente, lee el artículo para que salgas de todas las dudas, ya que te lo explica muy bien.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 17/05/2011, 16:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: socket o chat php?????

hola he leido la información que me han facilitado y he logrado avanzar un poco ,ya cree multiples sockets a a la escucha(no estoy muy seguro si a esto se le denomina ya programacion en hilos) ,entendiendo medianamente lo que estoy haciendo

pero no he podido con la función socket_select no comprendo como funciona exactamente pego el codigo que cree esperando que alguien me indique que estoy haciendo mal.

o como deberia integrar esta funcion a mi codigo


como resulado de correla obtengo lo siguiente

Warning: socket_select() [function.socket-select]: no resource arrays were passed to select in C:\wamp\www\socket\socket_full.php on line 54
nada.

*************************************************

<?php

set_time_limit(0);

ob_implicit_flush();
// DEFINIENDO VARIABLES
$host = "127.0.0.1";
$puerto = 5200;

$linten[10];
$socket[10];
$bind[10];

for ($i = 0; $i <= 9; $i++) {
$socket[$i]=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
}





for ($i = 0; $i <= 9; $i++) {

$bind[$i]=socket_bind($socket[$i], $host, $puerto=$puerto);
$puerto=$puerto+1;
}


for ($i = 0; $i <= 9; $i++) {
$listen[$i] = socket_listen($socket[$i], 3);
}


$write = NULL;
$except = NULL;

$núm_sockets_cambiados = socket_select($socket, $write, $except, 0);

if ($núm_sockets_cambiados === false) {
print "nada.<br>";
} else if ($núm_sockets_cambiados > 0) {
print "algo.<br>";
}






for ($i = 0; $i <= 9; $i++) {
socket_close ($socket[$i]);
}
<?
  #8 (permalink)  
Antiguo 18/05/2011, 05:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: socket o chat php?????

Si te fijas en lo que dice el error y miras el manual, indica que tienes que pasar un array en cada una de los parametros con el resource correspondiente. Al parecer no estás pasando un array que tenga los resource. Verifica cada una de las variables que tiene, hazle por ejemplo un var_dump y verifica si cada una es un array y que cada una tenga resources.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 01/07/2011, 08:40
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: socket o chat php?????

Hola

Generé un script que hace uso de multiples puertos en una maquina (aprox 50) por encima del puerto 2000. Esto lo puedo subir a alguna de esas empresas que prestan hosting gratis en internet sin problemas? esto debido a la cantidad de puertos que utilizo, me cobraran algo por esto o alguna sancion quizas?

Etiquetas: chat, socket
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:36.