• Publicidad

Blocking

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Blocking

Notapor arnedis » 2009-12-10 15:26 @685

Hola. Mi nombre es Cristian y soy bastante nuevo en esto... mi problema es que he buscado por la Internet un problema que me surge...
Cuando intento enviar información desde Ubuntu a un servidor en Windows lo hace correctamente, pero éste me tiene que responder algo, pero no lo hace...
He comprobado que se comunica porque el servidor en Windows cuando desde Linux le digo "Cambiarhora" éste me cambia la hora de Linux y la sincroniza con la de Windows pero aparte de eso el servidor me tiene que decir "Changed" y yo a ese "Changed" lo tengo que mostrar en una página web... pero el problema es cuando quiero mostrar ese "Changed" porque el Mozilla (en Linux) se queda esperando al localhost... ya intenté poner el socket como blocking => 0 y en 1 también probé pero nada... ¡¡¡Alguien que me ayude, please!!! Gracias de antemano :twisted: :twisted: :twisted:
Última edición por explorer el 2009-12-10 15:33 @689, editado 1 vez en total
Razón: Ortografía, anglicismos
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Publicidad

Re: Blocking

Notapor explorer » 2009-12-10 15:56 @705

Bienvenido a los foros de Perl en Español, arnedis.

Parece que se trata de un intercambio de información entre servidor y cliente usando el protocolo HTTP, lanzando un CGI, del que esperas una respuesta. Si no aparece, es quizás porque el servidor no termina de enviar la respuesta o que el CGI no termina de enviar la información al servidor web.

Habría que ver si, efectivamente, el CGI termina correctamente.

La solución: en los ficheros de registro (log) del servidor web.
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

Re: Blocking

Notapor arnedis » 2009-12-10 17:38 @777

Este es el código de mi script. Lo raro es que cuando cierro el server en Windows, en Linux me muestra la respuesta... lo bueno sería que me muestre tal respuesta sin tener que cerrar dicho server... Gracias por tu dedicación.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use IO::Socket;
  3. use Socket;
  4. print "content-type: text/html \n\n";
  5.  
  6. $Sock2 = new  IO::Socket::INET(
  7.         PeerPort=>12000,
  8.         Proto=>'tcp',
  9.         PeerAddr=>'192.168.2.114',
  10.         Blocking=>0);
  11. print "<body>\n";
  12. print $Sock2 "Consulta";
  13. print <$Sock2>;
  14. print "ss";
  15. print "</body>";
  16. close($Sock2);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-12-10 17:52 @786, editado 1 vez en total
Razón: Tildes, bloques de código
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Re: Blocking

Notapor explorer » 2009-12-10 17:54 @787

No me entero... ¿ese código qué es? ¿el cliente que ataca al servidor? ¿el CGI que está en el servidor y que a su vez ataca a otro?
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

Re: Blocking

Notapor arnedis » 2009-12-10 18:25 @809

Es el cliente que ataca al servidor que está escuchando en el puerto 1200... yo tengo 2 opciones:
1- Preguntarle la hora
2- Cambiar la hora
En este caso le mando "Consulta" para mostrar la hora de la computadora que tiene Windows en la página que tengo en Linux.
Última edición por explorer el 2009-12-10 18:37 @817, editado 1 vez en total
Razón: Ortografía, anglicismos, abreviaturas telefónicas
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Re: Blocking

Notapor explorer » 2009-12-10 18:28 @811

Pero, no estamos hablando de un protocolo HTTP, ¿verdad?

Lo digo porque veo que ese cliente se conecta a un servidor y le envía un text/html y espera un resultado, pero todo está mezclado... Incluso el Content-type del principio, no va a ningún sitio: solo sale en pantalla.
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

Re: Blocking

Notapor arnedis » 2009-12-10 18:33 @814

Te pregunto algo... ¿esto tiene algo de malo?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$Sock2 = new  IO::Socket::INET(

        PeerPort=>12000,

        Proto=>'tcp',

        PeerAddr=>'192.168.2.114',

        Blocking=>0);

print $Sock2 "Consulta";

print <$Sock2>;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-12-10 18:42 @821, editado 1 vez en total
Razón: Bloques de código
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Re: Blocking

Notapor explorer » 2009-12-10 18:51 @827

No, no hay nada raro, salvo que estás primero enviando la consulta y luego esperando la respuesta.

La clave de un protocolo hecho a medida es que tienen que hablar perfectamente bien cliente y servidor.

El mejor ejemplo que se me ocurre e idéntico a lo que estás haciendo, está en la famosísima página de Linux Journal 1999/04/01. En concreto, tienes un ejemplo de servidor en el listado 5 y de cliente en el listado 6. Míralos y verás que son casi iguales a lo que quieres hacer.

Actualización: Fíjate que el intercambio de mensajes usan "\n" al final. Por eso pueden hacer <$sock>, porque eso implica la presencia de caracteres de fin de línea.
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

Re: Blocking

Notapor arnedis » 2009-12-10 19:11 @841

Muchas gracias, voy a mirar el enlace que me sugeriste.
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Re: Blocking

Notapor arnedis » 2009-12-10 19:46 @865

Hola... sigo con problemas... perdón por ser tan molesto.

Ahora mi problemita es que me tira un erroraso, ¡ja,ja!... te muestro cómo quedó mi código después de modificarlo...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. # server2way.pl - a server that reads from
  3. # and writes to a client
  4. use strict; #me parece q este es el problema.........
  5. use IO::Socket;
  6. use Sys::Hostname;
  7. my $sock = new IO::Socket::INET(
  8.                    PeerAddr=>'192.168.2.114', #aca le saque el localhost y le puse la IP de la pc con windows
  9.                    LocalPort => 12000, #este es el puerto q escucha el programa en windows
  10.                    Proto     => 'tcp',
  11.                    Listen    => SOMAXCONN,
  12.                    Reuse     => 1);
  13. $sock or die "no socket :$!";
  14. STDOUT->autoflush(1);
  15. my($new_sock, $buf);
  16. while ($new_sock = $sock->accept()) {
  17.     # got a client connection, so read
  18.     # line by line until end-of-file
  19.     while (defined($buf = <$new_sock>)) {
  20.    # respond to client request using
  21.    # a cleverly disguised switch
  22.         # statement
  23.    foreach ($buf) {
  24.                  print($new_sock
  25.                        "Consulta", #aca le envio la consulta para que me diga que hora es en la pc con windows
  26.                        "\n"),
  27.                  last;
  28.        # default case:
  29.        print <$new_sock>; #si no te anda asi proba poner esto"DEFAULT\n" con comillas y saca <> quedaria algo asi: $new_sock "DEFAULT\n"
  30.    }
  31.     }
  32.     close $new_sock;
  33. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Probé usando lo del content text/html y sin él... ¿tienes idea de qué puede llegar a ser el problemita? Estoy muy agradecido por tu ayuda :D
arnedis
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2009-12-10 15:12 @675

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron