Logo Espacio Linux Paypal - Acepta pagos con tarjeta en tu negocio      
Portada Manuales Linux Descargas Foros Buscar Mapa del sitio Ayuda BlogEL
   Iniciar sesión | Registrarse    
 
Principal

Patrocinadores

Boletín Espacio Linux
Las novedades del sitio y el mundo Linux en tu email.


Usuarios
Bienvenido, Anónimo

     Miembros:
Último: xremyalex
Nuevos hoy: 13
Nuevos ayer: 10
Total: 30529

     Navegando:
Anónimos: 408
Miembros: 13
Total: 421


Miembros conectados:

01: vsanson
02: elpirao
03: Diabliyo
04: Burning
05: maiku
06: xremyalex
07: yoyofv
08: e-Vox
09: haldrik
10: Ayax
11: Deckon
12: pendulo
13: enriquehh

Mensajes recientes
 Instalación de distribuciones
 Manera correcta para instalar debian testing?
 La distro perfecta para mi seria... ¿existe?
 Software
 Impresora Pausada
 Emulacion programa de comunicación wifi sobre Linux
 Hardware
 Tarjeta WiFi reconocida en Ubuntu, no en WiFiSlax. +problema
 no puedo iunstalar mi segunda tarjeta de red
 Programación
 less y ps -a, en C
 compilar una libreria con otro gcc
 Sistema
 Lo que no me gusto del LINUX
 Como iniciar sesion automaticamente ??
 Seguridad
 como administro mis coneciones wifi
 usuario y contraseña en ubuntu
 Redes y Servidores
 server de archivos para internet
 Servidor Freeradius
 Proyectos
 Crear Un Sistema Operativo...
 como programar el puerto serial en matlab?
 Debates
 Andrew S. Tanenbaum(cread or de minix) El heroe no proclamado
 10 cosas linux debería mejorar...
 El Café
 ¿Qué tontería has intentado hacer con GNU/Linux?
 ¿cual crees que es la mejor antena direccional PCI?
 Desarrollo Web
 Intentando mostrar una imagen: problema con rutas
 Intentando imprimir todas las filas de una tabla
 Documentación
 busco este libro pero en español, ¿alguno de uds lee libr...
 kernel a fondo
 Screenshots
 IceWM en Debian Lenny
 Está por llegar el concurso screenshots 2008
 KDE
 Aplicaciones para KDE4 en KDE3 ¿Se puede?
 Problema con sesion en KDE 3.5
 GNOME
 XVNC o control remoto multiusuario
 Problema apariencia Ubuntu Hardy
 Otros escritorios y entornos
 Mejor escritorio para linux
 (SOLUCIONADO) Ayuda con fluxbox, no puedo iniciarlo
 X Window
 Debian Lenny+Compiz= Problemas con los videos
 Ubuntu 8.4+compiz
 Vídeos
 Kill -9
 Soy un PC, pero uso Linux

[ Entrar a los foros ]
Buscar

Sitios amigos

Espacio Linux :: Ver tema - programar un script en perl o c para que escuche un puerto
ReglamentoReglamento general de los foros
 FAQFAQ  BuscarBuscar  Grupos de usuariosGrupos de usuarios  Miembros  PerfilPerfil
  Mensajes privadosMensajes privados  

programar un script en perl o c para que escuche un puerto

Publicar nuevo tema  Responder al tema  Foros de discusión -> Seguridad
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
fenix27
Forista Nuevo
Forista Nuevo



Miembro No. 26759
Registrado: Mar 05, 2008
Mensajes: 18

MensajePublicado: Mar Ago 26, 2008 6:16 pm    Asunto: programar un script en perl o c para que escuche un puerto Responder citando

alguien sabe como debo programar un script en perl o en c para que escuche por un puerto predeterminado como por ejemplo en 5555?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
pataro
Forista Medio
Forista Medio



Miembro No. 27469
Registrado: Apr 18, 2008
Mensajes: 104
Ubicación: Buenos Aires

MensajePublicado: Mie Ago 27, 2008 7:13 pm    Asunto: Re: programar un script en perl o c para que escuche un puer Responder citando

PERL ni idea, te paso un ejemplo de programa cliente y programa servidor escrito en C.

Código:

/* srv.c
*
*   Un simple "servidor" que escucha al cliente clnt.c
*
*/

/*
*  Estos headers estan en /usr/include
*/
#include <stdio.h>         
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define PORT   3389   /* El puerto que sera abierto */
#define BACKLOG   5   /* El maximo numero de conexiones permitidas */

int main(void) {

   int fd_srv, fd_clnt;    /* los ficheros descriptores */

   struct sockaddr_in server;   /* para la informacion de la direccion del servidor */

   struct sockaddr_in client;   /* para la informacion de la direccion del cliente */

   int sin_size;

   /* A continuacion la llamada a socket()
   *    AF_INET y SOCK_STREAM estan definidas en bits/socket.h, la cual esta incluida en sys/socket.h
   */
   if ((fd_srv=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { 
      printf("error en socket()\n");
      exit(-1);
   }

   /*  Completamos la estructura server
   */

      server.sin_family = AF_INET;         

      /*
      *  htons -> Nodo a variable corta de red
      *  htonl -> Nodo a variable larga de red
      *  ntohs -> Red a variable corta de nodo
      *  ntohl -> Red a variable larga de nodo
      */
      server.sin_port = htons(PORT);

      /*
      * INADDR_ANY esta definida en netinet/in.h
      *  y coloca nuestra direccion IP automaticamente
      */
      server.sin_addr.s_addr = INADDR_ANY;

      /* Escribimos ceros en el resto de la estructura */
      bzero(&(server.sin_zero),8);

   /* Terminada la estructura server
   */
 
   /* A continuacion la llamada a bind() */
   if(bind(fd_srv, (struct sockaddr*)&server, sizeof(struct sockaddr)) == -1) {
      printf("error en bind() \n");
      exit(-1);
   }     

   if(listen(fd_srv, BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size = sizeof(struct sockaddr_in);
      if ((fd_clnt = accept(fd_srv, (struct sockaddr *)&client, &sin_size)) == -1) {
         printf("error en accept()\n");
         exit(-1);
      }

      /* Mostrara la direccion IP del cliente */
      printf("Se obtuvo una conexion desde %s\t%d\n", inet_ntoa(client.sin_addr), client.sin_addr);

      /* Enviamos el mensaje de bienvenida al cliente */
      send(fd_clnt, "Bienvenido a mi servidor.\n", 26, 0);

      close(fd_clnt); /* Cierra la conexion con el cliente */
   }
}


Código:

/* clnt.c
*
*   Este programa se conecta al srv.c
*   Debemos pasar como argumento de la linea de comandos la IP donde esta corriendo el srv.c
*
*/

/*
*  Estos headers estan en /usr/include
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>   /* netbd.h es necesitada por la estructura hostent ;-) */

#define PORT       3550   /* El Puerto Abierto del nodo remoto */
#define MAXDATASIZE    100   /* El numero maximo de datos en bytes que puede recibir este programejo */

int main(int argc, char *argv[]) {

   int fd, numbytes;       

   char buf[MAXDATASIZE];   /* en donde es almacenara el texto recibido */

   /*
    * hostent esta definida en netdb.h
   */
   struct hostent *he;      /* estructura que recibira informacion sobre el nodo remoto */

   struct sockaddr_in server;   /* informacion sobre la direccion del servidor */

   if (argc !=2) {
      printf("Uso: %s <Direccion IP del servidor de flujos>\n", argv[0]);
      exit(-1);
   }

   if ((he = gethostbyname(argv[1])) == NULL) {       
      printf("gethostbyname() error\n");
      exit(-1);
   }

   if ((fd = socket(AF_INET, SOCK_STREAM, 0))==-1){ 
      printf("socket() error\n");
      exit(-1);
   }

   server.sin_family = AF_INET;
   server.sin_port = htons(PORT);
   server.sin_addr = *((struct in_addr *)he->h_addr); 
   /* he->h_addr pasa la informacion de "*he" a "h_addr" */
   bzero(&(server.sin_zero),8);

   if(connect(fd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) {
      printf("connect() error\n");
      exit(-1);
   }

   if ((numbytes = recv(fd, buf, MAXDATASIZE, 0)) == -1) {
      printf("Error en recv() \n");
      exit(-1);
   }

   buf[numbytes]='\0';

   /* muestra el mensaje de bienvenida del servidor */
   printf("Mensaje del Servidor: %s\n",buf);

   close(fd);   /* cerramos fd */

}


Slds.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes anteriores:   
Publicar nuevo tema  Responder al tema  Foros de discusión -> Seguridad Todas las horas son GMT - 6 Horas

Página 1 de 1



No puedes publicar nuevos temas en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en encuestas en este foro



Powered by phpBB © 2001 phpBB Group
phpBB port v2.1 based on Tom Nitzschner's phpbb2.0.6 upgraded to phpBB 2.0.4 standalone was developed and tested by:
ArtificialIntel, ChatServ, mikem,
sixonetonoffun and Paul Laudanski (aka Zhen-Xjell).

Version 2.1 by Nuke Cops © 2003 http://www.nukecops.com

Forums ©
 

Copyright | Términos de uso | Política de privacidad | Publicidad | Contáctanos | Blog