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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6
31  Programación / Programación C/C++ / Re: Problemita con sockets en: 19 Mayo 2016, 12:34 pm
Posiblemente el socket ae cerro por algun error o no le estas pasando los parametros correctos.

No es necesario que pegues todo el codigo solo la linea involucrada y sus variables..

La parte del recv es esta:

Código
  1. while(1){
  2. if(numbytes=recv(fd,buf,100,0)==-1) printf("error recv");
  3.  
  4.   buf[numbytes]='\0';
  5.   printf("%s", buf);
  6.  
  7.   }
  8.  
32  Programación / Programación C/C++ / Problemita con sockets en: 19 Mayo 2016, 00:20 am
Estoy haciendo una pequeña libreria para sockets en C muy simple, basicamente es un fichero .c con dos funciones una para servidor y otra para cliente, en un .h meto los descriptores de los sockets exportandolos con extern y he creado dos archivos .c para probar la biblioteca, uno para el server y otro para el client, llegan a conectarse por un socket pero el recv me da error -1 y no se que puede ser. No he pegado el codigo por que es un poco largo.

Saludos.
33  Programación / Programación C/C++ / Implementación ordenamiento burbuja en C en: 2 Febrero 2016, 15:19 pm
Sencilla implementación del algoritmo de ordenamiento "burbuja":

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ordenar_array(int *, int);
  5.  
  6. int main() {
  7.  
  8. int array[9]={5, 7, 7, 8, 5, 8, 1, 9, 3};
  9. ordenar_array(array, 9);
  10. int x;
  11. for(x=0; x<9; x++) {
  12.  
  13. printf("%d", array[x]);
  14.  
  15. }
  16. printf("\n");
  17.  
  18. }
  19.  
  20. void ordenar_array(int * array, int numero_elementos) {
  21.  
  22. int x, n, aux;
  23.  
  24. for(n=1; n<numero_elementos; n++) {
  25. for(x=0; x<numero_elementos-1; x++) {
  26.  
  27. if(array[x+1]<array[x]) {
  28.  
  29. aux=array[x];
  30. array[x]=array[x+1];
  31. array[x+1]=aux;
  32.  
  33. }
  34.  
  35. }
  36. }
  37. }
  38.  
34  Programación / Programación C/C++ / Re: ¿ Me pueden explicar este código ? (Escaner de puertos) en: 20 Junio 2015, 11:35 am
Hay que leer la documentacion, ya en el anterior mensaje te pegaron la definicion de una funcion, ahora tenes que aprender a buscar por tu cuenta el resto.

Y bzero lo que hace es darle valor 0 a ciertos bytes, casi lo dice en el nombre de la funcion practicamente.

The bzero() function sets the first n bytes of the area starting at s to zero (bytes containing '\0').
La funcion bzero pone los primeros n bytes del area que comienza en s a 0 (bytes contienen '\0').

void bzero(void *s, size_t n);

N y s son parametros, N es el numero de bytes (8 en este caso, mejor seria usar el sizeof del campo que uno quiere poner a 0 pero bueno) y s es el puntero a la memoria que queremos ponera 0, el campo sin_zero de la variable conect en este caso.

htons function.

https://silviocesare.wordpress.com/2007/10/22/setting-sin_zero-to-0-in-struct-sockaddr_in/

Gracias por la respuesta, pero es que la teoría de htons ya la se, lo he buscado ya en google "La función
htons convierte el entero corto dado (16 bytes) dato por hostshort desde el orden de bytes del hosts al orden de bytes de la red. "

El problema está en que no entiendo esos conceptos de "orden de bytes del hosts" y "orden de bytes de la red" no se lo que significa, perdon por ser tan pesado es que en esto de los sockets estoy muy perdido.

Saludos.
35  Programación / Programación C/C++ / Re: ¿ Me pueden explicar este código ? (Escaner de puertos) en: 20 Junio 2015, 10:37 am
The bzero() function sets the first n bytes of the area starting at s to zero (bytes containing '\0').

Vale, ya esta entendido, he visto algunos ejemplos también por internet y creo que lo he entendido, eso hace falta para que la estructura siempre tenga 16 bits, pero para que sirve la funcion htons y como se usa ?
36  Programación / Programación C/C++ / Re: ¿ Me pueden explicar este código ? (Escaner de puertos) en: 20 Junio 2015, 09:28 am
Gracias, me has aclarado bastantes dudas, una última cosa, ¿ Qué hace la linea ?:

Código
  1. bzero(&(conect.sin_zero), 8);

y la funcion "htons".

Saludos.

37  Programación / Programación C/C++ / ¿ Me pueden explicar este código ? (Escaner de puertos) en: 19 Junio 2015, 16:46 pm
Hola a todos, resulta que estoy intentando aprender sockets en C, he leido ya varias webs y he intentado aprender por mi cuenta pero me resulta muy dificil los sockets, no se por que, el caso es que mirando por la web encontré un source, bastante pequeño sobre un scaneador de puertos en C (evidentemente usando sockets), lo he estado mirando y la mayoría no lo entiendo (todo lo que tiene que ver con los sockets dentro del source no lo pillo), ¿ Alguien podría explicarme linea por linea que hace este programa ? me sería de mucha ayuda para seguir intentando aprender sockets.

El source es este:

Código
  1.    #include <stdio.h>
  2.    #include <unistd.h>
  3.    #include <errno.h>
  4.    #include <netdb.h>
  5.    #include <string.h>
  6.    #include <sys/types.h>
  7.    #include <sys/socket.h>
  8.  
  9.  
  10.    int main(int argc, char *argv[]) {                  
  11.  
  12.     printf("\n\n");
  13.  
  14.     int sockid;    // Identificador del socket
  15.     int connid;    // Identificador de la conexion
  16.     int pcon = 1;  // Contador del bucle
  17.     int pa = 0;    // Almacena el numero de puertos que tiene abiertos el pc remoto;
  18.  
  19.     struct sockaddr_in conect; // Estructora para guardar datos de conexion.
  20.  
  21.     // Datos en la estructura:
  22.     conect.sin_family = AF_INET;
  23.     conect.sin_addr.s_addr = inet_addr("127.0.0.1");
  24.     bzero(&(conect.sin_zero), 8);
  25.  
  26.     for (pcon = 0; pcon != 8000; pcon++) {
  27.  
  28.     sockid = socket(AF_INET,SOCK_STREAM,0);
  29.  
  30.     conect.sin_port = htons(pcon);
  31.     connid = connect(sockid, (struct sockaddr *)&conect, sizeof(struct sockaddr));
  32.  
  33.     if (connid != -1) {
  34.  
  35.     printf("Puerto %d.................... ABIERTO \n",pcon);
  36.     pa++;
  37.     close(connid);
  38.     close(sockid);
  39.     }
  40.     }
  41.  
  42.     printf("\n\n");
  43.     printf("Scann terminado... %d puertos abiertos",pa);
  44.     printf("\n\n");
  45.  
  46.     return 0;
  47.    }
  48.  

El código lo saque de un post antiguo de este mismo foro, la fuente es esta:

http://foro.elhacker.net/programacion_cc/scanner_de_puertos_en_c-t187519.0.html

Gracias de antemano, saludos.
38  Programación / Programación C/C++ / Re: problema con funcion que ordena array de tipo int en: 4 Junio 2015, 09:06 am
Al parecer tratas de implementar el algoritmo de ordenacion por selección o InsertSort pero me temo que hay bastantes errores, algunos de estos son:

* No descartas el menor en cada iteración.
* Ignoras los repetidos al ordenar cuando, en el mejor escenario, deberías eliminar los repetidos después del elemento (lo mas sencillo es simplemente ordenar la lista y solo entonces ignorar repetidos).
* En todos los bucles menos el primero tienes una iteración de mas, por ejemplo:
Código
  1. for (int x = 0; len + 1 > x; x++) ...
Hay que eliminar el "+ 1" de todos esos bucles. Bueno, en realidad hay que cambiar de forma significativa los bucles acorde a la forma correcta del algoritmo.
* En las dos ultimas funciones tratas de calcular el numero de elementos en el array mediante sizeof, esto no es posible ya que toda función declarada en la forma:
Código
  1. void ordenar_array(int num_array[], int num_result[]);
Se procesa como si la declaracion fuera:
Código
  1. void ordenar_array(int *num_array, int *num_result);
En su lugar modifica las funciones para que acepten un argumento adicional, por supuesto este es el numero de elementos del array.

Una explicación a detalle pero en ingles del algoritmo es The Selection Sort, una mas cortesía de Wikipedia: Selection sort

Un saludo

Gracias, me ha servido de mucho :)
39  Programación / Programación C/C++ / Re: problema con funcion que ordena array de tipo int en: 3 Junio 2015, 10:00 am
Por favor ayuda, tengo mucha curiosidad por resolver el problema.
40  Programación / Programación C/C++ / Re: problema con funcion que ordena array de tipo int en: 2 Junio 2015, 20:38 pm
No entiendo para que te complicas, puedes mejor hacer una copia el array original y ordenar esta copia utilizando cualquier algoritmo de ordenación.

Salu2s

Ya así es mucho más facil pero quería practicar algoritmia hasta que me he quedado atascado un buen rato aquí.
Páginas: 1 2 3 [4] 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines