• Sábado 20 de Abril de 2024, 01:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - skappermx

Páginas: [1]
1
Perl / Re: Socket en Perl
« en: Sábado 11 de Octubre de 2008, 19:01 »
Gracias lo que pasa es que casi no programo en perl , me dedico mas C++ pero voy a leerme a conciencia el Perl CookBook  :good:  :good:

2
Perl / Socket en Perl
« en: Sábado 11 de Octubre de 2008, 18:30 »
Hola a todos es contare de mi problema  :rolleyes:

Quiero hacer un socket en perl que se conecte a mi servidor hecho en C++ y que si el servidor le manda X cadena haga tal cosa :rolleyes:

Código: Text
  1.  # Server Program
  2. use IO::Socket::INET;
  3. print ">> Server Program <<n";
  4.  
  5. # Create a new socket
  6. $enchufe = new IO::Socket::INET->new(PeerPort=>3460,Proto=>'tcp',PeerAddr=>'localhost');
  7. my $buf;
  8. $enchufe->recv($buf,8);
  9.  
  10.  
  11. if ($buf ne 'chick' )
  12. {
  13.  
  14. print "Lo que me envio: $bufn";
  15. }
  16. else
  17. {
  18. print "Errorn";
  19. }
  20. $enchufe->close();
  21.  

 :hitcomp: El problema es que el servidor manda la palabra "chicken" pero si pongo en el if otra palabra distinta a alo que manda el servidor la ejecuta y no ejecuta el else

Por que pasa eso? :ouch:

Gracias

Saludos :good:

3
C/C++ / Re: Comunicacion de Sockets Perl y C
« en: Martes 7 de Octubre de 2008, 20:10 »
:no:  :no:  :no:  :no:  esoty muy decepcionado de mi mismo, perdon no me habia dado cuenta

Gracias por el dato :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:

4
C/C++ / Comunicacion de Sockets Perl y C
« en: Martes 7 de Octubre de 2008, 03:09 »
Hola tengo un problema quisiera comunicar un servidor que hice en C y un cliente en Perl :lol:  pero cada vez que conecto el cliente de perl me manda que la conexion ha sido rechazada  :(

Aqui les dejo el code de los dos:

C
Código: Text
  1.  /*
  2.     ** server.c -- Ejemplo de servidor de sockets de flujo
  3.     */
  4.  
  5.     #include <stdio.h>
  6.     #include <stdlib.h>
  7.     #include <unistd.h>
  8.     #include <errno.h>
  9.     #include <string.h>
  10.     #include <sys/types.h>
  11.     #include <sys/socket.h>
  12.     #include <netinet/in.h>
  13.     #include <arpa/inet.h>
  14.     #include <sys/wait.h>
  15.     #include <signal.h>
  16.  
  17.     #define MYPORT 3490    // Puerto al que conectarán los usuarios
  18.  
  19.     #define BACKLOG 10     // Cuántas conexiones pendientes se mantienen en cola
  20.  
  21.     void sigchld_handler(int s)
  22.     {
  23.         while(wait(NULL) > 0);
  24.     }
  25.  
  26.     int main(void)
  27.     {
  28.         int sockfd, new_fd;  // Escuchar sobre sock_fd, nuevas conexiones sobre new_fd
  29.         struct sockaddr_in my_addr;    // información sobre mi dirección
  30.         struct sockaddr_in their_addr; // información sobre la dirección del cliente
  31.         int sin_size;
  32.         struct sigaction sa;
  33.         int yes=1;
  34.  
  35.         if ((sockfd = socket(AF_INET, SOCK_STREAM, 6)) == -1) {
  36.             perror("socket");
  37.             exit(1);
  38.         }
  39.  
  40.         if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) {
  41.             perror("setsockopt");
  42.             exit(1);
  43.         }
  44.        
  45.         my_addr.sin_family = AF_INET;         // Ordenación de bytes de la máquina
  46.         my_addr.sin_port = htons(MYPORT);     // short, Ordenación de bytes de la red
  47.         my_addr.sin_addr.s_addr = INADDR_ANY; // Rellenar con mi dirección IP
  48.         memset(&(my_addr.sin_zero), '', 8); // Poner a cero el resto de la estructura
  49.  
  50.         if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))
  51.                                                                        == -1) {
  52.             perror("bind");
  53.             exit(1);
  54.         }
  55.  
  56.         if (listen(sockfd, BACKLOG) == -1) {
  57.             perror("listen");
  58.             exit(1);
  59.         }
  60.  
  61.         sa.sa_handler = sigchld_handler; // Eliminar procesos muertos
  62.         sigemptyset(&sa.sa_mask);
  63.         sa.sa_flags = SA_RESTART;
  64.         if (sigaction(SIGCHLD, &sa, NULL) == -1) {
  65.             perror("sigaction");
  66.             exit(1);
  67.         }
  68.  
  69.         while(1) {  // main accept() loop
  70.             sin_size = sizeof(struct sockaddr_in);
  71.             if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr,
  72.                                                            &sin_size)) == -1) {
  73.                 perror("accept");
  74.                 continue;
  75.             }
  76.             printf("server: got connection from %sn",
  77.                                                inet_ntoa(their_addr.sin_addr));
  78.             if (!fork()) { // Este es el proceso hijo
  79.                 close(sockfd); // El hijo no necesita este descriptor
  80.                 if (send(new_fd, "Hello, world!n", 14, 0) == -1)
  81.                     perror("send");
  82.                 close(new_fd);
  83.                 exit(0);
  84.             }
  85.             close(new_fd);  // El proceso padre no lo necesita
  86.         }
  87.  
  88.         return 0;
  89.     }
  90.  

y

PERL


Código: Text
  1.  
  2. #! /usr/bin/perl -w
  3. # client1.pl - a simple client
  4. use strict;
  5. use Socket;
  6. # initialize host and port
  7. my $host = shift || 'xxxxx';
  8. my $port = shift || 3460;
  9. my $proto = getprotobyname('tcp');
  10. # get the port address
  11. my $iaddr = inet_aton($host);
  12. my $paddr = sockaddr_in($port, $iaddr);
  13. # create the socket, connect to the port
  14. socket(SOCKET, PF_INET, SOCK_STREAM, $proto)
  15.                         or die "socket: $!";
  16. connect(SOCKET, $paddr) or die "connect: $!";
  17. while (<SOCKET>) {
  18.         print;
  19. }
  20. close SOCKET or die "close: $!";
  21.  
  22.  


Gracias

Páginas: [1]