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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13
71  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 5 Enero 2011, 19:43 pm
Nada ya esta solucionado dejo el código cambiado por si a alguien le interesa:
Código
  1. #include<windows.h>
  2. #include<iostream>
  3. #include<string.h>
  4. #include<stdio.h>
  5. #include<sys/types.h>
  6. #include<winsock.h>
  7. #include<conio.h>
  8.  
  9. int main(){
  10.    {
  11.        WSADATA wsaData;   /* Si esto no funciona */
  12.        //WSAData wsaData; /* prueba esto en su lugar */
  13.  
  14.        if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)  
  15.        {
  16.            fprintf(stderr, "WSAStartup failed.\n");
  17.            exit(1);
  18.        }  
  19.    }
  20.    ///////////////////////////////////////////////////////////////////
  21.  
  22.  
  23.  
  24.  
  25.    struct sockaddr_in my_addr, they_addr;
  26.    SOCKET sockfd, newfd;
  27.    sockfd=socket(AF_INET,SOCK_STREAM,0);
  28.    if(sockfd==-1){
  29.           printf("error en socket");
  30.           std::cin.get();
  31.           exit(-1);
  32.           }
  33.  
  34.    my_addr.sin_family = AF_INET;        
  35.    my_addr.sin_port = htons(54336);      
  36.  
  37.    if(my_addr.sin_addr.s_addr = htonl(INADDR_ANY)==-1){
  38.            printf("error en ip\n");
  39.            std::cin.get();
  40.            exit(-1);
  41.            }
  42.    memset(&(my_addr.sin_zero), '\0', 8);
  43.  
  44.    if(bind(sockfd, (struct sockaddr *)&my_addr,  sizeof(struct sockaddr))==-1){
  45.        printf("error en bind()");
  46.        std::cout<<WSAGetLastError()<<std::endl;
  47.        std::cin.get();
  48.        exit(-1);
  49.    }
  50.    if(listen(sockfd, 10)==-1){
  51.        printf("error en listen()");
  52.        getch();
  53.        exit(-1);
  54.    }
  55.    int bytes_sent;
  56.    int size_sockaddr=sizeof(sockaddr);
  57.    while(1){
  58.    newfd=accept(sockfd,(struct sockaddr *)&they_addr, &size_sockaddr);
  59.  
  60.    //send(newfd, "hola", 5, 0);
  61.    bytes_sent=send(newfd, "mola", 5, 0);
  62.    closesocket(newfd);
  63.    }                        
  64.    WSACleanup();
  65.    printf("todo en orden\n");
  66.    getchar();
  67. }
72  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 5 Enero 2011, 00:10 am
Es bueno saberlo  :)
73  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 4 Enero 2011, 23:28 pm
Bueno. Ya que nadie entiende lo que se pregunta lo voy a repetir de otra manera.
Segun wikipedia:
Citar
TCP
El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron.
Lo que significa que si envió los datos por TCP tienen que llegar seguro correctamente.
Como dice esta pagina(http://www.fismat.umich.mx/mn1/manual/node24.html):
Citar
Socket de flujo
da un flujo de datos de dos vías, confiable, y sin duplicados sin límites de grabación. El flujo opera en forma parecida a una conversación telefónica. El tipo del socket es SOCK_STREAM, el cual en el dominio de Internet usa TCP (Transmission Control Protocol).
SOCK_STREAM usa el protocolo TCP lo que significa que la cadena "hola" tiene que llegar por cojones al ordenador opuesto(de hecho en ocasiones si que llega).
Mi pregunta es: ¿Por que demonios no llega?¿Se debe a la recepción?¿Wikipedia miente?¿Hay interferencias?¿los extraterrestres están jodiéndome manipulando los datos?
XD espero que ahora se entienda mejor

PD: gracias por el link Sagrini pero no se a que viene eso.
74  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 4 Enero 2011, 22:59 pm
Hola, gracias por responder.
Citar
Hola tuket, yo probaría a enviar los datos de esta forma para ver si es este el problema.

Código
char buff[] = "hola";
send(newfd, buff, 5, 0);
 

Si tengo tiempo, luego pruebo los programas.

Saludos.
Eso ya lo probé, pasa lo mismo: la gran mayoría de las veces los datos llegan corruptos. Yo intuyo que se debe de hacer alguna comprobación pero no se.
75  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 4 Enero 2011, 20:33 pm
Por que a  pesar de estar escrito en C++ la duda no tiene que ver en absoluto con C++. Tiene que ver con la programación de sockets. xD
76  Programación / Programación General / Re: Imperfeccion en la transmisión con sockets de flujo. en: 4 Enero 2011, 20:07 pm
Si, claro(aunque no creo que sea necesario):
1º:
Código
  1. #include<iostream>
  2. #include<string.h>
  3. #include<stdio.h>
  4. #include<sys/types.h>
  5. #include<winsock.h>
  6. #include<conio.h>
  7.  
  8. int main(){
  9.    {
  10.        WSADATA wsaData;   /* Si esto no funciona */
  11.        //WSAData wsaData; /* prueba esto en su lugar */
  12.  
  13.        if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)  
  14.        {
  15.            fprintf(stderr, "WSAStartup failed.\n");
  16.            exit(1);
  17.        }  
  18.    }
  19.    ///////////////////////////////////////////////////////////////////
  20.  
  21.  
  22.  
  23.  
  24.    struct sockaddr_in my_addr, they_addr;
  25.    SOCKET sockfd, newfd;
  26.    sockfd=socket(AF_INET,SOCK_STREAM,0);
  27.    if(sockfd==-1){
  28.           printf("error en socket");
  29.           std::cin.get();
  30.           exit(-1);
  31.           }
  32.  
  33.    my_addr.sin_family = AF_INET;        
  34.    my_addr.sin_port = htons(54332);      
  35.  
  36.    if(my_addr.sin_addr.s_addr = htonl(INADDR_ANY)==-1){
  37.            printf("error en ip\n");
  38.            std::cin.get();
  39.            exit(-1);
  40.            }
  41.    memset(&(my_addr.sin_zero), '\0', 8);
  42.  
  43.    if(bind(sockfd, (struct sockaddr *)&my_addr,  sizeof(struct sockaddr))==-1){
  44.        printf("error en bind()");
  45.        std::cout<<WSAGetLastError()<<std::endl;
  46.        std::cin.get();
  47.        exit(-1);
  48.    }
  49.    if(listen(sockfd, 10)==-1){
  50.        printf("error en listen()");
  51.        getch();
  52.        exit(-1);
  53.    }
  54.    int size_sockaddr=sizeof(sockaddr);
  55.    newfd=accept(sockfd,(struct sockaddr *)&they_addr, &size_sockaddr);
  56.    int bytes_sent;
  57.    //send(newfd, "hola", 5, 0);
  58.    do{bytes_sent=send(newfd, "hola", 5, 0);}
  59.    while (bytes_sent!=5);
  60.  
  61.    WSACleanup();
  62.    printf("todo en orden\n");
  63.    getchar();
  64. }

2º:

Código
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<string.h>
  4. #include<arpa/inet.h>
  5. #include<sys/types.h>
  6. #include<netinet/in.h>
  7.  
  8. int main(){
  9. int sockfd;
  10. struct sockaddr_in dest_addr;
  11. sockfd=socket(AF_INET, SOCK_STREAM, 0);
  12. if(sockfd==-1){
  13.        printf("error en el socket");
  14.        std::cin.get();
  15.        return -1;
  16.        }
  17. dest_addr.sin_family=AF_INET;
  18. dest_addr.sin_port=htons(54332);
  19. dest_addr.sin_addr.s_addr=inet_addr("192.168.1.112");
  20. if(dest_addr.sin_addr.s_addr==-1){
  21.        printf("error en ip");
  22.        getchar();
  23.        return -1;
  24.        }
  25. memset(&(dest_addr.sin_zero),0, 8);
  26. if(connect(sockfd, (struct sockaddr*)&dest_addr, sizeof(struct sockaddr))==-1){
  27.        printf("error en conect");
  28.        getchar();
  29.        return -1;
  30. }
  31. char cadena[5];
  32. recv(sockfd, &cadena, 5, 0);
  33. cadena[4]=0;
  34. std::cout<<cadena<<std::endl;
  35. printf("todo en orden\n");
  36. }
77  Programación / Programación General / Imperfeccion en la transmisión con sockets de flujo. en: 4 Enero 2011, 14:18 pm
He hecho 2 programas de sockets en C++.
Consiste enviar la cadena "hola" desde un ordenador a otro y hacer que lo muestre en la pantalla del otro ordenador.
Lo he conseguido hacer pero el problema es que el 80% de las veces los datos llegan corruptos. Esto me extraña por que según tengo yo entendido los sockets de flujo usan el protocolo TCP y en este protocolo es el mismo el que se encarga de que lleguen los resultados adecuadamente.
¿Por que sucede esto?¿Como se puede evitar?

Datos: un ordenador es linux y el otro es windows. No estoy usando datagramas.
78  Programación / Bases de Datos / Re: cual es mi error: sentencia SQL en: 23 Octubre 2010, 00:33 am
CREATE DATABASE IF EXISTS videoteca;

Pues eso a ver si podéis encontrar el error por que yo no.
Meda un error 1064 y que me lea el manual de sintaxis.

edito:
Vale que tonto xD
CREATE DATABASE IF NOT EXISTS videoteca;

reedito:
aprovecho este tema para preguntar:

por que puedo hacer esto:
Código
  1. DROP DATABASE IF EXISTS videoteca;
  2. /*CREATE DATABASE videoteca;*/
y esto:
Código
  1. /*DROP DATABASE IF EXISTS videoteca;*/
  2. CREATE DATABASE videoteca;

pero no puedo hacer esto:

Código
  1. DROP DATABASE IF EXISTS videoteca;
  2. CREATE DATABASE videoteca;
79  Programación / Bases de Datos / cual es mi error: sentencia SQL en: 23 Octubre 2010, 00:04 am
CREATE DATABASE IF EXISTS videoteca;

Pues eso a ver si podéis encontrar el error por que yo no.
Meda un error 1064 y que me lea el manual de sintaxis.

edito:
Vale que tonto xD
CREATE DATABASE IF NOT EXISTS videoteca;
80  Foros Generales / Dudas Generales / reparacion windows 7 en: 18 Octubre 2010, 22:47 pm
hola resulta que una prima se le ha escoñao el ordenador, es windows 7.
El problema es que al iniciar se queda la pantalla en negro sale el cursor y ahí se queda no puedo ejecutar el administrador de tareas con ctr+alt+supr.
Desde un live cd linux intente acceder al disco duro de diversas formas: mediante nautilus, mount y munt force, de todas las maneras me daba error(supongo que debe ser lo típico de que cerraste mal windows y tienes que iniciar y apagar correctamente). Luego también probé con un live Cd de windows xp llamado Ultimate boot CD for Windows aqui me indicaba que el tamaño de tal partición en la que estaba windows 7 es de -1 Mb xD y cuando intentaba acceder mediante el gestor de carpetas de windows se quedaba trabado (No responde)  también lo intente con el interprete de comandos cmd y simplemente entraba y salia .
Asi que... esto tiene remedio ?? puede ser que haya algún sector del disco dañado?? hay alguna alternativa??

PD: en realidad no tengo ninguna necesidad de salvar datos puesto que tengo copia de seguridad, es simplemente para saber que podría hacer en tal apuro.
Gracias por adelantado.
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines