Foros del Web » Programando para Internet » PHP »

Sockets

Estas en el tema de Sockets en el foro de PHP en Foros del Web. hola, amigos! Tengo unas dudas con el uso de sockets en PHP. Tengo que poner todas las instrucciones juntas?, explico: abro el socket que quiero, ...
  #1 (permalink)  
Antiguo 07/07/2004, 01:41
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Sockets

hola, amigos!
Tengo unas dudas con el uso de sockets en PHP.

Tengo que poner todas las instrucciones juntas?, explico:
abro el socket que quiero, le mando los datos y lo cierro?
o puedo hacer como con Visual Basic, que lo puedo dejar abierto y le mando datos cuando quiero?
No puedo hacer que mediante el uso de variables externas, por ejemplo si llamo al php: http://www....../archivo.php?mensaje=LALALAL
que me nvie al socket el contenido de la variable mensaje?

Pregunto esto, puesto que queiro hacer un chat via socket, pero no pude encontrar nada de info en la web, nose si porq es imposible, o porq no lo encontre...

Pense que para hacer el chat, el uso de los sockets tendria que ser como en Visual Basic, osea, abro el socket, establezco la comunicacion, y cuando quiero le mando un mensaje (datos) por el socket y el otro lo recibe.

Ahhhh, ya casi me olvidaba, el chat q quiero hacer, es tambien con flash.
Se me ocurrio mediante el uso de LoadVars, pero estuve probando y no me manda los datos q le pongo, hice un php con el siguiente codigo, pero no funciono:

Código PHP:
<?

if($funcion=="1"){
    
$soc=fsockopen("xxx.xxx.xxx.xxx","XXXX");
                print 
"&soc=$soc";
}
if(
$funcion=="2"){
    
fputs($soc,$txt);
}
if(
$funcion=="3"){
    
fclose($soc);
}

?>
Aclaro que el host al que me conecto, tiene abierto el puerto ya.

lo que quise hacer es q por medio del metodo POST con las LoadVars de flash, segun el valor de 'funcion', hace una accion distinta.
Pero no anduvo , me conectaba, pero no me enviaba los datos que le mandaba por flash.
Cabe destacar que: al conectarse me devuelve el valor de fsockopen, y luego lo uso en las demas funciones.

Basicamente lo que necesito es conectarme como cliente a un socket ya abierto y poder por medio de flash y php, enviarle datos cuando quiero.

Resumen:
Hacer un chat PHP-Flash-Socket.

Muchisimas Gracias

y perdon por lo largo del post!!!!!

PD:
Si ya hay post sobre esto (aclaro q busque y no encontre), dejenme el link, porq buscando no encontre!.

__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!

Última edición por edi87; 07/07/2004 a las 01:43
  #2 (permalink)  
Antiguo 07/07/2004, 01:57
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 15 años, 11 meses
Puntos: 0
Hola
Creo (que me rectifiquen si no) que cuando lo abres tu puedes utilizarlo pero otro usuario ya no podria,tendria que esperar a que lo cierres. para el poder abrirlo.
Puedes utilizar para establecer un tiempo de espera para la lectura/escritura de datos sobre el socket, use stream_set_timeout() .
Te dejo aquí un enlace para que puedas ver las funciones referntes a los socket.
Saludos
__________________
Hay tanto que aprender y tan poco tiempo
  #3 (permalink)  
Antiguo 07/07/2004, 02:36
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Torus, gracias por tu pronta respuesta, te cuento:
Probe lo de stream_set_timeout, pero sigue sin funcionar.
En cuanto a lo que dijiste de los sockets, si, eso lo se, q si estoy utilizando uno, otra persona no se puede conectar, o al menos yo creo lo mismo, pero ese no es mi problema, el problema es que no puedo lograr que el codigo de php que deje en el post funcione, si yo mediante LoadVars (SendAndLoad, POST) le envio los datos necesarios, no me manda el mensaje...no se que puede ser.

Muchas Gracias, y muy buen site el que me dejaste, pero no resuelve mi problema...
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #4 (permalink)  
Antiguo 07/07/2004, 03:54
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Agrego mas info:
Al apretar el boton de enviar (que ejcuta la "funcion 2" --> envia el mensaje al socket) me pone el siguiente error:

Warning: fputs(): supplied argument is not a valid stream resource in /home/admwebcom/domains/webcom-design.com.ar/public_html/pre/chat/socket.php on line 34

Por lo que se, es que hay un argumento q esta mal en la instruccion fputs(), el argumento "string", que pide, esta llegando bien, para mi, es el argumento donde va el socket utilizado, ya que como dije antes, me parece que lo cierra al terminar el php.
Otra cosa: probe con pfsockopen(), pero no lo pude hacer andar...

HELPPPPPPPPPPPP HELPPPPPPPPPPPP
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #5 (permalink)  
Antiguo 07/07/2004, 05:32
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 15 años, 11 meses
Puntos: 0
Hola edi
cambia el fputs() por fwrite() a mi me pasó en una ocasion , lo cambie y funciono, quiza por que el fputs() es un alias de fwrite().
Saludos
__________________
Hay tanto que aprender y tan poco tiempo
  #6 (permalink)  
Antiguo 07/07/2004, 07:22
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Echale un vistazo a la librería CURL quizás te sirva.

Un saludo.
  #7 (permalink)  
Antiguo 07/07/2004, 13:18
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Antes que nada, gracias por contestar!

Probe con fwrite() y el resultado es el mismo, me pone exactamente el mismo error...

y lo de las librerias CURL, tengo que verlo..., pero la verdad no tengo ni idea de que se trata...

Muchas Gracias!!
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #8 (permalink)  
Antiguo 08/07/2004, 02:28
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Hago una nueva pregunta, mas concreta
Abro un socket en php, cuando termina de ejecutarse el php, se cierra?
si se cierra, tenog forma de dejarlo abierto?

gracias!
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #9 (permalink)  
Antiguo 08/07/2004, 03:23
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Cita:
Iniciado por edi87
Abro un socket en php, cuando termina de ejecutarse el php, se cierra?
Sí, se cierra una vez finalizado el proceso.

Cita:
si se cierra, tenog forma de dejarlo abierto?
En vez de procesarlo por el servidor Web, lanzalo directamente desde la línea de comandos, busca información sobre "PHP-CLI".

Un saludo.
  #10 (permalink)  
Antiguo 08/07/2004, 14:45
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Ok, voy a buscar a ver que encuentro.....

Muchas Gracias
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #11 (permalink)  
Antiguo 08/07/2004, 14:52
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Tximis, estuve leyendo algo de PHP-CLI, pero me parece que no me sirve, puesto que lo q yo quiero es hacer un chat, en el que yo hago de cliente con una aplicacion hecha en VB con winsock, y que si alguien entra al chat en mi pagina, se conecte a este cliente mio, y asi poder chatear...
seria un chat VB-PHP.
nose si se entendio, pero espero que si.
Como puedo hacer?, ya que se cierra el socket, necesito dejarlo abierto.
O bien, decime como uso PHP-CLI.

PD:
Recuerden que es un server alquilado el que uso, por ende, no puedo instalar nada, ni hacer nada raro...

Muchas Gracias
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #12 (permalink)  
Antiguo 08/07/2004, 17:16
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Cita:
Iniciado por edi87
Tximis, estuve leyendo algo de PHP-CLI, pero me parece que no me sirve, puesto que lo q yo quiero es hacer un chat, en el que yo hago de cliente con una aplicacion hecha en VB con winsock, y que si alguien entra al chat en mi pagina, se conecte a este cliente mio, y asi poder chatear...
seria un chat VB-PHP
Creo que no te aclaras, ¿Donde esta el servidor? Por lo que cuentas quieres hacer un servidor al que se van a conectar varios clientes. Te estas liando demasiado yo creo..

Cita:
Recuerden que es un server alquilado el que uso, por ende, no puedo instalar nada, ni hacer nada raro...
Lo mejor es que busques, no reinventes la rueda. Puedes por ejemplo, crearte un canal en alguna red IRC, y utilizar aplicaciones Java o cualquier otra cosa para los clientes.

Un saludo.
  #13 (permalink)  
Antiguo 08/07/2004, 18:24
Avatar de edwinandlozano  
Fecha de Ingreso: octubre-2003
Mensajes: 272
Antigüedad: 14 años, 1 mes
Puntos: 0
Hola edi87,,, en una oportunidad trabaje con sockets en php (algo muy sencillito)... las cositas que realice en socket y que las puse a correr me daba error, pero lo mas raro es que luego las puse a correr en un linux y me corrio a las mil maravillas... no se si depronto eso tenga que ver.. pero prueba de nada se pierde...
Por otro lado como dice Tximis.. no has visto otra alternativa como java.. ?????
  #14 (permalink)  
Antiguo 09/07/2004, 13:37
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 0
Bueno, la verdad es que no pienso en java por una cuestion "estetica", digamos.
Como quiero hacer la parte grafica del chat en flash, se me ocurrio que mediante LoadVars, me conviene hacerlo en PHP.

Sobre el tema de que se conecten varias personas, si es asi, pero pienso hacerlo con distintos puertos.....supongo que se puede, no?

Respecto al tema de los servers, a lo que me referia es que yo contrato un servidor para hosting de mi pagina. A ese servidor me referia!!, ya que quizas tenga alguna restriccion.

Muchas Gracias
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #15 (permalink)  
Antiguo 10/10/2005, 16:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Vb y PHP

Hola que tal edi, mira la verdad no se mucho de esto pero has considerado esta opcion (no se si se pueda hacer)

tu cliente web al conectarse crea un numer aleatorio de puerto rand(1000,9999); y lo guardas en una variable de session $_SESSION[puerto] para que se conecte siempre al mismo puerto despues en el fsockopen

<?

if($funcion=="1"){
$soc=fsockopen("Tu_cliente_Vb","Puerto_de servidor_Vb");
print "&soc=$soc";
}
if($funcion=="2"){
fputs($soc,$txt);
}
if($funcion=="3"){
fclose($soc);
}

?>

despues el cliente Vb recibe el puerto y lo redirecciona como una ventana (Cliente_Vb) con el pueto abierto al cual se coectara este cliente (asi recibiras mensajes por ese puerto de ese usuario) y para las respuestas puedes ocupar un archibo, ya que como estas trabajando con PHP y es bien sabido que el php trabaja del lado servidor, no podra recibir respuestas en lineacon flash, ya que lo que LoadVars recibe es meramente un &nombre_de_variable=VALOR del fsockopen que ENVIAS.

asi que tu respuesta de que si puedes dejar un socket abierto creo que seria concretamente NO ya que trabajas con EL SERVIDOR no con el EXPLORADOR el SERVIDOR abre el soket y envia y recibe en tiempo real lo que se le indique (ESTO LO HACE ANTES DE MANDARTE LA PAGINA A TI) por lo cual no puedes dejar un socket ABIRTO

EJEMPLO:

<?
if($funcion=="1"){
$soc=fsockopen("www.prueba.com","80"); <-- esto me da el codigo fuente del INDEX de www.prueba.com

}
?>

para que entiendas lo que hace siertamente fsockopen conectate a cualquien pagina por el puero 80 wwwejemplo.com y veras que lo unico que te regresa es el codigo fuente por lineas que es lo que hace el EXPLORADOR

Bueno creo que deverias buscar otra opcion paralo que quieres, ya que es muy dificil asi.

yo hice un CHAT con FLASH-PHP pero con archibos unicos (SESSIONES DE CHAT)

si quieres contactame y charlamos
  #16 (permalink)  
Antiguo 10/10/2005, 17:06
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 12 años, 2 meses
Puntos: 1
Creo que te la estas liando mucho.

Una pregunta, suponiendo que tengas esto funcionando, como vas a hacer para que el cliente reciba la respuesta del VB, o sea supongo que tendrias que hacer una conexion desde Visual Basic, pasandole por POST o GET, la respuesta, y este archivo que guarde esta misma respuesta en una BD, o algo por el estilo, con un identificador, para identificar a que cliente va dirigido.

Pero simplemente me parece demasiado lio, no seria mejor armar un chat simplemente en PHP-Flash, y almacenar todo en una bd??

Nose, puede que no haya entendido bien tu idea, pero me parece mas practico un Chat en PHP-Flash, que andar liando con sockets y VB, etc.
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #17 (permalink)  
Antiguo 16/11/2005, 17:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 125
Antigüedad: 12 años, 9 meses
Puntos: 0
editen de esta forma sera mejor la lectura
Código PHP:
<? 

if($funcion=="1"){ 
$soc=fsockopen("Tu_cliente_Vb","Puerto_de servidor_Vb"); 
print 
"&soc=$soc"

if(
$funcion=="2"){ 
fputs($soc,$txt); 

if(
$funcion=="3"){ 
fclose($soc); 


?>
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 19:04.