• Publicidad

HTTP y Socket: ¿Código o error de servidor?

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

HTTP y Socket: ¿Código o error de servidor?

Notapor creating021 » 2006-12-13 18:33 @814

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use Socket;
socket(HTTP, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
my $atn  = inet_aton("freshmea.net");
my $add = sockaddr_in(80, $atn);
connect(HTTP, $add) or die "Conexión: $!\n";
send(HTTP, "GET http://freshmeat.net HTTP/1.0\n", 0);
send(HTTP, "Host: www.yahoo.com\n", 0);
send(HTTP, "User-Agent: perlhttp/0.1 ($^O)\n\n", 0);
chomp(my $msg = <HTTP>); #status
while(my $line = <HTTP>){
  chomp;
  #hacer algo con headers y codigo...
  print $line;
}
shutdown HTTP, 2; #por si algo anda mal
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Bien, se supone que debería salir el index (según el RFC 2616 y los intentos que he hecho en Yahoo! Perl.org y otros) pero por alguna razón no sale en este servidor, dice que no existe (busca por http://freshmeat.nethttp://freshmeat.net) y ahora me pregunto y les pregunto :
¿Es algo del servidor o es mi código?
¿Como se cual es el index (punto de inicio) en el servidor http?

Ya se que debería usar LWP, pero quiero hacerlo todo desde 0.
¿Alguna idea? :?
Gracias.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Publicidad

Notapor explorer » 2006-12-13 19:52 @869

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use strict;
use Socket;
socket(HTTP, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
my $atn  = inet_aton("freshmeat.net");
my $add = sockaddr_in(80, $atn);
connect(HTTP, $add) or die "Conexión: $!\n";
send(HTTP, "GET / HTTP/1.0\n", 0);
send(HTTP, "Host: freshmeat.net\n", 0);
send(HTTP, "User-Agent: perlhttp/0.1 ($^O)\n\n", 0);
chomp(my $msg = <HTTP>); #status
while(my $line = <HTTP>){
  chomp;
  #hacer algo con headers y codigo...
  print $line;
}
shutdown HTTP, 2; #por si algo anda mal
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
'Host: ' debe indicar el dominio al que queremos conectarnos, ya que una misma máquina (freshmeat.net) pueda dar servicio a más de un dominio.

El recurso que se pide es '/' para indicar que queremos el recurso inicial y por defecto.

Y sí, con LWP es más simple :-)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP::Simple;
print get("http://freshmeat.net");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2006-12-14 14:46 @657

Wow, me quede mucho tiempo (días y días) buscando y todo era por host, je je, muchas gracias explorer, de verdad.
Y yo que lo use como un proxy (GET http://.... ) :lol:
Nuevamente, muchas gracias, eres todo un genio (erudito)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor creating021 » 2006-12-31 15:14 @676

Todo iva muy bien hasta que intenté com Yahoo! :cry:
Código: Seleccionar todo
bash-3.1$ telnet yahoo.com 80
Trying 216.109.112.135...
Connected to yahoo.com.
GET / HTTP/1.0
Host: www.yahoo.com
Accept: */*
Accept-Language: en-us

HTTP/1.1 301 Moved Permanently
Date: Sun, 32 Dec 2006 20:01:37 GMT
Location: http://www,yahoo.akadns.net/
Connection: close
Content-Type: text/html; charset=iso-8

CODIGO HTML


Si le digo en Host que es yahoo.com me dice que ha sido movido a http://www.yahoo.com :?

Alguna idea?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2006-12-31 15:50 @701

Pues entonces tendrás que hacer lo que te dice yahoo: hacer la solicitud a www,yahoo.akadns.net.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-01-01 10:54 @496

:oops: Claro, sabes, hace 5 días hice eso (desde el browser) y no pude resolver así que pensé que no existía tal cosa, pero era error de conexión.
¡Gracias!
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados