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


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 59
251  Programación / Programación C/C++ / Re: algun ejemplo de ventanas hijas en c++ en: 28 Septiembre 2011, 04:37 am
Cuando te refieres a ventanas hijas te refieres a algo como MDI?, es decir, una ventana dentro de la otra?
252  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 27 Septiembre 2011, 19:52 pm
Disculpa es así:

Remote_Server.sin_addr.s_addr = INADDR_ANY;

O sino:

Remote_Server.sin_addr.S_un.S_addr = INADDR_ANY;
253  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 26 Septiembre 2011, 22:36 pm
No me había fijado pero estás aceptando mal la conexión... en la parte donde llamas a la función accept() deberías hacer algo así:

Código
  1. SOCKET nueva_conex;
  2. do{
  3. nueva_conex = accept(Client, NULL,NULL);
  4. }while(nueva_conex == SOCKET_ERROR);

Y en esta parte en el servidor deberías cambiarla así:

Remote_Server.sin_addr = *((in_addr *)gethostbyname("localhost")->h_addr);

por

Remote_Server.sin_addr = INADDR_ANY;

Edit:

Recuerda que cuando llames accept() te devolverá una variable tipo SOCKET que es la nueva conexión que acabas de aceptar y esa variable es la que utilizarás para enviar/recibir los datos.
254  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 26 Septiembre 2011, 22:13 pm
En el cliente nunca le asignas ningún contenido a la variable Buffer, de esta manera:

Cliente:
Código
  1. #include "windows.h"
  2. #include "iostream"
  3. #pragma comment(lib,"ws2_32.lib")
  4.  
  5. #define PORT 9999
  6.  
  7. WSADATA wsa;
  8. SOCKET Client;
  9. int Conexion;
  10. sockaddr_in Remote_Server;
  11.  
  12. int Error()
  13. {
  14. std::cout << "Error " << GetLastError() << std::endl;
  15. getchar();
  16. return 0;
  17. }
  18.  
  19. int main(void)
  20. {
  21.    if(WSAStartup(MAKEWORD(2,0),&wsa) != 0)
  22. {
  23. Error();
  24. }
  25.  
  26. Remote_Server.sin_family = AF_INET;
  27. Remote_Server.sin_port = htons(PORT);
  28. Remote_Server.sin_addr = *((in_addr *)gethostbyname("localhost")->h_addr);
  29.  
  30. Client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  31.  
  32. Conexion = connect(Client,(sockaddr *)&Remote_Server,sizeof(sockaddr));
  33.  
  34. if(Conexion == INVALID_SOCKET)
  35. {
  36. Error();
  37. }
  38.  
  39. char buffer[] = "Hola";
  40. send(Client,buffer,strlen(buffer),0);
  41.  
  42. return 0;
  43. }
  44.  

Y lo recibes mal no le puedes hacer strlen() a Buffer

Servidor:
Código
  1. #include "windows.h"
  2. #include "iostream"
  3. #pragma comment(lib,"ws2_32.lib")
  4.  
  5. #define PORT 9999
  6.  
  7. WSADATA wsa;
  8. SOCKET Client;
  9. int Conexion;
  10. sockaddr_in Remote_Server;
  11.  
  12. int Error()
  13. {
  14. std::cout << "Error " << GetLastError() << std::endl;
  15. getchar();
  16. return 0;
  17. }
  18.  
  19. int main(void)
  20. {
  21.    if(WSAStartup(MAKEWORD(2,0),&wsa) != 0)
  22. {
  23. Error();
  24. }
  25.  
  26. Remote_Server.sin_family = AF_INET;
  27. Remote_Server.sin_port = htons(PORT);
  28. Remote_Server.sin_addr = *((in_addr *)gethostbyname("localhost")->h_addr);
  29.  
  30. Client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  31.  
  32. Conexion = bind(Client,(SOCKADDR*)&Remote_Server,sizeof(Remote_Server));
  33. listen(Client,10);
  34. accept(Client,NULL,NULL);
  35. char *Buffer = (char*)malloc(5);
  36. while(true)
  37. {
  38.  
  39. memset(Buffer, 0, 5);
  40. recv(Client,Buffer,4,0);
  41. if(!strcmp(Buffer,"Hola"))
  42. {
  43. break;
  44. }
  45.  
  46. }
  47. std::cout << Buffer <<std::endl;
  48. getchar();
  49. free(Buffer);
  50. return 0;
  51. }

PD: Recuerda que strcmp() devuelve 0 si las cadenas son iguales.
255  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 26 Septiembre 2011, 21:43 pm
El servidor lo hiciste tu? Si muestras algo de código sería mejor...
256  Programación / Programación C/C++ / Re: Dimensión de Arreglos en C en: 26 Septiembre 2011, 05:34 am
La verdad no se cual es el tamaño pero puedes hacer esto como te dijo LearningSpanishProgrammer hacer un while hasta que malloc() te devuelva NULL:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5. char * arreglo;
  6. unsigned long long i = 1;
  7. do{
  8. arreglo = (char*)malloc(i);
  9. free(arreglo);
  10. i++;
  11. }while(arreglo != NULL);
  12.  
  13. printf("breakpoint\n");  // Hacer breakpoint aqui
  14.  
  15. return 0;
  16. }
  17.  

Yo probé esto y la verdad nunca salio del ciclo así que el tamaño debe ser MUY grande.
257  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 26 Septiembre 2011, 05:10 am
Que raro... si tienes algún servidor a la escucha en el puerto que te estás tratando de conectar debería funcionar.
258  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 25 Septiembre 2011, 20:43 pm
Creo que porque usaste la estructura SOCKADDR_IN y no sockaddr_in no se la verdad no estoy seguro.
259  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 25 Septiembre 2011, 20:07 pm
La verdad no veo el error, pero aquí te dejo mi código que me funcionó:

Código
  1. #include <iostream>
  2. #include <Windows.h>
  3. #pragma comment(lib, "Ws2_32.lib")
  4. #define PUERTO 80
  5.  
  6. WSADATA wsa;
  7. SOCKET cliente;
  8. sockaddr_in remoto;
  9.  
  10. int error();
  11.  
  12. int main(){
  13. if(WSAStartup(MAKEWORD(2,2), &wsa))
  14. return error();
  15.  
  16. remoto.sin_family = AF_INET;
  17. remoto.sin_port = htons(PUERTO);
  18. remoto.sin_addr = *((in_addr*)gethostbyname("www.google.com")->h_addr);
  19.  
  20. cliente = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  21.  
  22. if(cliente == INVALID_SOCKET)
  23. return error();
  24.  
  25. if(connect(cliente, (sockaddr*)&remoto, sizeof(sockaddr)))
  26. return error();
  27.  
  28. closesocket(cliente);
  29.  
  30. WSACleanup();
  31.  
  32. return 0;
  33. }
  34.  
  35. int error(){
  36. std::cout << "Error #" << GetLastError() << std::endl;
  37. WSACleanup();
  38.  
  39. getchar();
  40.  
  41. return 0;
  42. }
260  Programación / Programación C/C++ / Re: Problema con sockets WinSock2 en: 25 Septiembre 2011, 19:59 pm
Cambia esto:

Código
  1. connect(Cliente,(SOCKADDR *)&SockAddr,sizeof(SOCKADDR_IN))
  2.  

Por esto:

Código
  1. connect(Cliente,(SOCKADDR *)&SockAddr,sizeof(SOCKADDR))
  2.  
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 59
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines