elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Java / Pasar nombre de funcion como parametro de otra funcion en java en: 31 Julio 2014, 18:54 pm
Hola amigos, estoy aprendiendo java y me gustaria saber si puedo pasar una funcion como parametro de otra funcion de una manera sencilla, que no complique el codigo.

es decir hay algo parecido o equivalente en java a algo tan bonito como lo siguiente?:

Código
  1.  
  2. //La funcion a pasar
  3. public function Hola():void{
  4.   trace("Hola mundo");
  5. }
  6.  
  7. //Esta funcion ejecuta la funcion pasada en su parametro
  8. public function Saluda(parametro:Function):void{
  9.    parametro();
  10. }
  11.  
  12. //Ejecutamos la funcion "Saluda" pasandole como parametro el nombre de la funcion "Hola" sin parentesis
  13. Saluda(Hola);
  14.  
  15.  

Resultado en consola "Hola mundo"
2  Programación / Programación C/C++ / Servidor de sockets en c en: 10 Julio 2014, 23:04 pm
Hola amigos estoy intentando de hacer un servidor de sockets en c bajo linux y bueno sinceramente no tengo mucha idea de c y me cuesta bastante entenderlo, ya no tengo capacidad para aprender un lenguaje de tan bajo nivel.
Bueno a lo que iba solo quiero aprender lo que implica de un servidor de sockets para poder hacer un servidor para un juego, bueno en realidad serán 2 servidores un para el juego y el otro para servir un crossdomain.xml

De momento he empezado a hacer pruebas con el servidor encargado de servir el xml la lógica consiste en lo siguiente, el cliente se conecta al servidor de xml al puerto 843 y le manda una cadena, el servidor comprueba dicha cadena y si la cadena coincide le contesta con un xml, una vez el cliente tiene el xml se desconecta automáticamente de ese servidor y se conecta al servidor del juego, el problema reside en que no me devuelve el xml.

Para probar el servidor lo que hago de momento es conectarme a través de telnet y una vez conectado le envió la cadena "<policy-file-request/>" y el servidor debería enviarme el xml, pero no me lo devuelve

en la consola de putty puedo ver mediante el comando put() como la cadena que yo le envió al servidor le llega de la siguiente manera.

<
policy-file-request/>

El primer carácter lo muestra en una línea y el resto de la cadena en la siguiente, no sé si esto puede llegar a afectar en algo.

A mí en cambio en la consola de telnet el servidor me devuelve la cadena que yo le envié de manera correcta <policy-file-request/> pero me tendría que devolver también el xml

En definitiva el siguiente if no se está cumpliendo   if(strcmp(buffer, "<policy-file-request/>")==0){



El código de ejemplo que estoy utilizando es este, agradezco cualquier corrección o ayuda.


Código
  1. #include<stdio.h>
  2. #include<string.h>    //strlen
  3. #include<sys/socket.h>
  4. #include<arpa/inet.h> //inet_addr
  5. #include<unistd.h>    //write
  6.  
  7. int main(int argc , char *argv[])
  8. {
  9.    int socket_desc , new_socket , c;
  10.    struct sockaddr_in server , client;
  11.    char *message , buffer[2000];
  12. int read_size;
  13.  
  14.  
  15.    //Create socket
  16.    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
  17.    if (socket_desc == -1)
  18.    {
  19.        printf("Could not create socket");
  20.    }
  21.  
  22.    //Prepare the sockaddr_in structure
  23.    server.sin_family = AF_INET;
  24.    server.sin_addr.s_addr = INADDR_ANY;
  25.    server.sin_port = htons( 843 );
  26.  
  27.    //Bind
  28.    if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
  29.    {
  30.        puts("bind failed");
  31.        return 1;
  32.    }
  33.    puts("bind done");
  34.  
  35.    //Listen
  36.    listen(socket_desc , 5);
  37.  
  38.    //Accept and incoming connection
  39.    puts("Waiting for incoming connections...");
  40.    c = sizeof(struct sockaddr_in);
  41.  
  42. while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) ){
  43.  
  44.           puts("Conexion establecida al servicio de crossdomain policy");
  45.      //Miramos que nos dice el cliente
  46.     //memset(buffer, '\0', sizeof( buffer ));
  47.   memset(buffer, 0, 2000);
  48.   // read_size = recv(new_socket , buffer , 20 , 0);
  49.  
  50.   //Receive a message from client
  51.    while( (read_size = recv(new_socket , buffer , 2000 , 0)) > 0 ){
  52.                   //Send the message back to client
  53.     puts(buffer);
  54.  
  55.  if(strcmp(buffer, "<policy-file-request/>")==0){//Si concuerda con la cadena "<policy-file-request/>" enviamos el cossdoamain al cliente
  56.                        message = "<?xml version=\"1.0\"?><!DOCTYPE cross-domainpolicy- SYSTEM \"http://www.adobe.com/xml/dtds/crossdomain.dtd\"><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>";
  57.                        write(new_socket , message , strlen(message));
  58.              }
  59.  write(new_socket , buffer , strlen(buffer));
  60.  memset(buffer, 0, 2000);
  61.                }
  62.  
  63.   if(read_size == 0){
  64.             puts("Client disconnected");
  65.             fflush(stdout);
  66.           }else if(read_size == -1){
  67.             perror("recv failed");
  68.           }
  69.    }//End While  
  70.    if (new_socket<0){
  71.        perror("accept failed");
  72.        return 1;
  73.    }
  74.  
  75.    return 0;
  76. }
  77.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines