Foros del Web » Programando para Internet » PHP »

socket en php

Estas en el tema de socket en php en el foro de PHP en Foros del Web. Buen dia de antemano gracias por la atencion, ayuda y/o colaboracion. tengo la siguiente inquietud: deseo conectarme a una direccion por telnet por le puerto ...
  #1 (permalink)  
Antiguo 09/09/2009, 21:11
 
Fecha de Ingreso: marzo-2003
Mensajes: 164
Antigüedad: 21 años
Puntos: 0
socket en php

Buen dia de antemano gracias por la atencion, ayuda y/o colaboracion.

tengo la siguiente inquietud:

deseo conectarme a una direccion por telnet por le puerto 8600, despues de conectado ecribo algo alli y porteriormente reponde con una trama.

tengo entendido que esto se puede hacer con socket, esta es mi primevara vez con este tema, alguien sabe como puede hacer o me puede dar indicios al respecto.

de nuevo le agradezco la atencion ayuda y/o colaboracion.

pd pongo la pregunta pero ire buscando sobre el tema en caso de encontrar la respuesta la pondre aqui. gracias a todos
  #2 (permalink)  
Antiguo 09/09/2009, 21:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: socket en php

Usa fsockopen() para obtener el gestor, posteriormente usa fwrite() y fread() normal para escribir y leer.

Saludos.
  #3 (permalink)  
Antiguo 09/09/2009, 23:01
 
Fecha de Ingreso: marzo-2003
Mensajes: 164
Antigüedad: 21 años
Puntos: 0
Respuesta: socket en php

Cita:
Iniciado por GatorV Ver Mensaje
Usa fsockopen() para obtener el gestor, posteriormente usa fwrite() y fread() normal para escribir y leer.

Saludos.
Mil gracias por la informacion, este es el codigo que lee y escribe en socket
$conexion = fsockopen ("75.126.232.162", 25);

if ($conexion) {
echo "Conexion realiaza con éxito";

//recibimos los primeros 1024 caracteres de la respuesta del servidor POP.
$respuesta = fgets ($conexion, 100);

//Volcamos en pantalla la respuesta del Servidor.
echo $respuesta."<BR>";

/*
$out = "\n";
fwrite($conexion, $out);
while (!feof($conexion)) {
echo fgets($conexion, 128);
}
*/



fwrite($conexion, "HELO\n");
echo fread($conexion, 1000);

fwrite($conexion, "HELO\n");
echo fread($conexion, 1000);


//cerramos la conexión.
fclose ($conexion);

tenia una duda con lo de leer y escribir pues estaba usando fput y fget y me salia un error opte por utilizar fread y fwrite que me sugeriste

de nuevo gracias
  #4 (permalink)  
Antiguo 14/09/2009, 21:36
 
Fecha de Ingreso: marzo-2003
Mensajes: 164
Antigüedad: 21 años
Puntos: 0
Respuesta: socket en php

Cita:
Iniciado por GatorV Ver Mensaje
Usa fsockopen() para obtener el gestor, posteriormente usa fwrite() y fread() normal para escribir y leer.

Saludos.
Buen dia GatorV, te agradezco la colaboracion en el tema, te podria molestar con una duda al respecto, espero no molestarte hay va:

Me conecto a una direccion por el puerto asi telnet ip 86000
luego escribo algo asi mrachiv.98123456.1.2.1.4 cuando se escribe no muestra nada al darle enter el me retorna una informacion esa respuesta es la que debo leer

adjunto pantallazos del proceso



con las indicaciones del codigo anterior cree este:


<?
set_time_limit(0);
//Obtenemos el momento inicial
$inicio=cuando();

$conexion = fsockopen ("200.74.146.84", 8600);

if ($conexion) {
echo "Conexion realiaza con éxito";

fwrite($conexion, "MARCHIV270223.9999.23OJO.1.98663305.ffff\n");

echo "-".fread($conexion, 1000)."-<br>";



fclose ($conexion);

//Obtenemos el momento final
$final=cuando();

//Calculamos la diferencia
$empleado = ($final - $inicio);
echo "Ha tardado".$empleado." segundos.";
}




function cuando()
{
$time = microtime();
$time = explode(" ",$time);
$time = $time[1] + $time[0];
return $time;
}

?>

me conecto bien y no demora ni 5 segundos en conectarse

Cuando escribo con fwrite se demora 60 segundos en responder y no muestra nada

Luego leoo con fread sedemora otros 60 segundos y no muestra nada


me podrias ayudar o decirme claro esta si se puede por que no muestra la informacion de la conexion cuando se escribe y luego se lee la respuesta.

quedo muy agrdecido por tu tiempo y/o ayuda
saludos
  #5 (permalink)  
Antiguo 15/09/2009, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: socket en php

Es probable que el puerto al que te estas conectando es el incorrecto, revisa eso y pasa el parámetro correcto a fsockopen.

Saludos.
  #6 (permalink)  
Antiguo 15/09/2009, 15:48
 
Fecha de Ingreso: marzo-2003
Mensajes: 164
Antigüedad: 21 años
Puntos: 0
Respuesta: socket en php

Cita:
Iniciado por GatorV Ver Mensaje
Es probable que el puerto al que te estas conectando es el incorrecto, revisa eso y pasa el parámetro correcto a fsockopen.

Saludos.
Buen dia GatorV, gracias por la colaboracion, el puerto esta bien, pues en el codigo en esta parte

if ($conexion) {
echo "Conexion realiaza con éxito";

muestra que se conecta bien,

El problema es cuando hago un fread o un fwrite, alli se demora demasiado y no trae nada.

pero si yo hago eso por telenet me muestra informacion, estos son los pasos por telent que efectuo

telnet 200.74.146.84 8600 -> se conecta
M <presiono tecla enter>
muestra mensaje codigo invalido

Bueno te agradezco de nuevo la atencion
  #7 (permalink)  
Antiguo 15/09/2009, 21:33
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 17 años, 11 meses
Puntos: 33
Respuesta: socket en php

jorge_anibal:
Aqui considero hay tres cosas muy importantes.
1.- En el puerto 8600 del servidor que esta ubicado en la IP 200.74.146.84
Hay en primer lugar una aplicacion o programa que escucha en ese puerto; parece ser un servidor de archivos segun tu indicas.
2.- Esta aplicacion entiende y responde a la aplicacion cliente llamada Telnet
que utiliza un protocolo de comunicacion especifico.
3.- Las conexiones entre servidores y clientes funcionen via un protocolo especifico y se comunican de una forma cuidadosamente estructurada y
definida en detalle.
Ejemplo:
La conexion a un servidor SMTP y utilizando fsockopen() se realiza
de la siguiente manera:
a.- se inicia la conexion
b.- se solicita logeo por autenticacion y para ello se puede utilizar fgets() and fputs()
c.- se envia el nombre de usuario CODIFICADO con base_64 encode()
d.- se envia de la misma manera el a la contraseña.
e.- Se envia un HELO.
Etc ETC ETC.
El punto esencial es que si se omite el HELO la comunicacion se corta y se cae
la conexion. Si el orden de la comunicacion lo haces diferente ya sea enviando la contraseña primero y el nombre de usuario segundo el servidor entiende que el primero es el nombre de usuario y por ende ese usuario no existe y la conexion se cae.
Si la informacion que se envia NO va con sus cabeceras adecuadas, la conexion podra
seguir existiendo pero el servidor NO responde y pareciera que el sistema "HANGS".
En fin es mucho mas complejo de lo que a veces uno se imagina.
Sin embargo, sabiendo los detalles, fsockopen() es una herramiente que puede servir para conexion e intercambio de informacion entre cualquier codigo y cualquier aplicacion-servidor, sea este servidor de paginas web, servidor de archivos, servidor de ftp, comunicacion serial al puerto com1 o com2, etc

Saludos
Y espero te ayude
Franco
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 00:47.