Foros del Web » Programación para mayores de 30 ;) » C/C++ »

sockets

Estas en el tema de sockets en el foro de C/C++ en Foros del Web. tengo este programa para cliente y para servidor, es solo que nose cual ejecutar primero, imagino que el serividor, ademas es en mi misma compu, ...
  #1 (permalink)  
Antiguo 06/04/2011, 21:28
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
sockets

tengo este programa para cliente y para servidor, es solo que nose cual ejecutar primero, imagino que el serividor, ademas es en mi misma compu, el codigo lo copie de una pagina paso a paso para lo que hago, y pues ejecuto el servidor y no se ve la pantalla pero el proceso esta activo y ejecuto despues cliente y no pasa nada de nada y no me da errores de nada ninguna de las dos, solo 1 warnign en cada uno pero no creo que alla problema, ayuda por favor, les agradeceria mucho me orientaran gracias

cliente

Código C++:
Ver original
  1. //cliente
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <winsock.h>
  5.  
  6. /* El chequeo de errores ha sido removido por claridad */
  7. void main(void)
  8. {
  9.     WSADATA WsaData;
  10.     WORD    wVersionRequerida = MAKEWORD (2, 2);
  11.  
  12.     /* Inicializar WinSock */
  13.     WSAStartup (wVersionRequerida, &WsaData);
  14.    
  15.     SOCKET Sock;
  16.  
  17.     Sock = socket (AF_INET, SOCK_STREAM, 0);
  18.  
  19.     SOCKADDR_IN DireccionServer;
  20.     memset (&DireccionServer, 0, sizeof (DireccionServer));
  21.     DireccionServer.sin_family = AF_INET;
  22.     DireccionServer.sin_addr.S_un.S_un_b.s_b1 = 127;
  23.     DireccionServer.sin_addr.S_un.S_un_b.s_b2 = 0;
  24.     DireccionServer.sin_addr.S_un.S_un_b.s_b3 = 0;
  25.     DireccionServer.sin_addr.S_un.S_un_b.s_b4 = 1;
  26.     DireccionServer.sin_port = 5000;
  27.  
  28.     int iResult = connect (Sock, (SOCKADDR*) &DireccionServer, \
  29.     sizeof(DireccionServer));
  30.  
  31.     if (iResult)
  32.     {
  33.         printf ("No se puede conectar\n");
  34.         return;
  35.     }
  36.  
  37.     unsigned Dato = 2;
  38.     send (Sock, (char *)&Dato, sizeof (Dato), 0);
  39.  
  40.     unsigned Rta;
  41.     recv (Sock, (char *)&Rta, sizeof (Rta), 0);
  42.     printf ("Dato enviado: %u, Respuesta recibida: %u\n", Dato, Rta);
  43.  
  44.     closesocket (Sock);
  45.     WSACleanup();
  46. }

servidor

Código C++:
Ver original
  1. //servidor
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <winsock.h>
  5.  
  6. /* El chequeo de errores ha sido removido por claridad */
  7. void main(void)
  8. {
  9.     /* Inicializar WinSock */
  10.     WSADATA WsaData;
  11.     WORD    wVersionRequerida = MAKEWORD (2, 2);
  12.     WSAStartup (wVersionRequerida, &WsaData);
  13.    
  14.     SOCKET SockEscucha;
  15.  
  16.     SockEscucha = socket (AF_INET, SOCK_STREAM, 0);
  17.  
  18.     SOCKADDR_IN DireccionLocal;
  19.     memset (&DireccionLocal, 0, sizeof (DireccionLocal));
  20.     DireccionLocal.sin_family = AF_INET;
  21.     DireccionLocal.sin_port = 5000;
  22.  
  23.     bind (SockEscucha, (SOCKADDR*)&DireccionLocal, sizeof (DireccionLocal));
  24.  
  25.     int iResult = listen (SockEscucha, 5);
  26.    
  27.     SOCKET SockConexion = accept (SockEscucha, NULL, NULL);
  28.     closesocket (SockEscucha);
  29.  
  30.     unsigned Dato;
  31.     recv (SockConexion, (char *)&Dato, sizeof (Dato), 0);
  32.  
  33.     unsigned Rta = Dato * 2;
  34.     send (SockConexion, (char *)&Rta, sizeof (Rta), 0);
  35.     printf ("Dato recibido: %u, Respuesta enviada: %u\n", Dato, Rta);
  36.  
  37.     closesocket (SockConexion);
  38.     WSACleanup();
  39. }
  #2 (permalink)  
Antiguo 07/04/2011, 10:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: sockets

Sobre que lo estas ejecutando?? se te cargan las ventanas negras (consola)??
  #3 (permalink)  
Antiguo 07/04/2011, 19:23
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: sockets

si osea que nomas ese codigo lo quiero para saber si me pude conectar, entonces ejecuto primero el servidor y no me sale nada pero si esta el preoceso en el administreador de tareas, entonces enseguida le doy al servidor y me salen las dos ventanas negras al mismo tiempo, de hecho pues no imprime nada, como tengo que hacerle??? primero ejecuto cual o algo esta mal en el codigo?? no creo
  #4 (permalink)  
Antiguo 08/04/2011, 00:51
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: sockets

Antes que nada quiero preguntarte, entiendes el código?, si no no deberías ejecutar código que te descargues por ahí, solo te recomiendo.

Segundo, hay que decir que tu servidor no tiene un bucle principal, con lo cual solo se ejecuta una vez y no configura ninguna ventana, con lo cual para ver los resultados, ya que usa la salida estándar, debes ejecutar los binarios desde la consola. Si le das con doble-click, el SO abrirá una consola provisional que solo durará el tiempo que dure el programa, lo cual es fugaz y como mucho te deja ver el "efecto" de creación de ventana.

Intenta ejecutar desde la consola ([Inicio]+[R], escribes cmd, [Enter]) cada uno de los programas, estoy seguro de que verás resultados, y si quieres que te explique un poco el código no dudes en preguntarme.

Por otro lado, tengo que decir que al no tener un bucle principal, el servidor morirá al pasar un cierto tiempo sin recibir datos, este tiempo se configura con las SockOpt si no recuerdo mal, en resumen, el programa que descargaste es un buen ejemplo de programación para Cliente-Servidor, pero desde luego es un programa obsoleto.

Por cierto, si quieres aprender más, consulta En la página oficial de MS

PD: Uso GNU/Linux y programar para servidores no es tan complicado, lo recomiendo por si quieres probar.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter

Última edición por jaao_death; 08/04/2011 a las 00:54 Razón: Páginas de consulta
  #5 (permalink)  
Antiguo 08/04/2011, 17:42
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: sockets

ya tengo varios dias estudiando lo basico sobre los sockets y las funciones, entiendo mas de lo que no, si comprendo las funciones y gran parte de todo, no es dificl, el problema es que ya lo ejecute desde msdos y nada, no pasa absolutamente nada ni con el cliente que estara pasando????
  #6 (permalink)  
Antiguo 08/04/2011, 18:56
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: sockets

Pone un par de If para ver si la creacion de los socket falla o no. Algo asi:

if (sock == INVALID_SOCKET)
printf(L"socket function failed with error = %d\n", WSAGetLastError() );
  #7 (permalink)  
Antiguo 08/04/2011, 21:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: sockets

si ya lo logre hacer todo jeje muchas gracias a todos, esta chido esto de los sockets ejjeje
  #8 (permalink)  
Antiguo 09/04/2011, 02:39
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: sockets

Cita:
Iniciado por davidtadeo Ver Mensaje
si ya lo logre hacer todo jeje muchas gracias a todos, esta chido esto de los sockets ejjeje
Podes especificar que era!
  #9 (permalink)  
Antiguo 10/04/2011, 07:29
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: sockets

bueno en primera use las funciones basicas para sockets, connect, bind, socket, send, recv() y cree mi cliente y servidor y pues como estoy en windows y uso dev-c++ tube que agregar al linker -lwsock32 y pues ya funciono de maravilla, estudiando cada funcion pude crear un keylogg y enviarme info a mi servidor pero si tiene antivirus la maquina del cliente se bloquea jejeje gracias, bueno ademas de que si tengo que estar comprobando cada funcion para saber si fallo y codigos de error que me devolvian, tambien basicamente era eso jejee

Etiquetas: sockets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:37.