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

Manejar eventos en tiempo real C++

Estas en el tema de Manejar eventos en tiempo real C++ en el foro de C/C++ en Foros del Web. Bueno, hemos decidido hacer una aplicación cliente-servidor, el cliente estará en C++ y el servidor en Java. La comunicación será por metadatos, pero no sabemos ...
  #1 (permalink)  
Antiguo 20/01/2013, 15:15
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Manejar eventos en tiempo real C++

Bueno, hemos decidido hacer una aplicación cliente-servidor, el cliente estará en C++ y el servidor en Java.

La comunicación será por metadatos, pero no sabemos exactamente cómo hacer que:

- Cada cliente tenga un id (¿IP?, ¿Serial?).
- El cliente reaccione a los metadatos que le envíe el servidor, los procese y en base a eso modifique sus objetos.

Les agradecería muchísimo su ayuda.

Saludos.
  #2 (permalink)  
Antiguo 20/01/2013, 17:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Manejar eventos en tiempo real C++

Para lo primero el servidor va a necesitar una direccion fija. ya sea un IP fijo o un nombre de dominio...

Para lo segundo algunas vez trabajaste con Sockets y todo eso? O es la primera vez que estas en eso?

Saludos,
  #3 (permalink)  
Antiguo 20/01/2013, 17:14
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Manejar eventos en tiempo real C++

No he trabajado con sockets, alguna lectura o algo que me recomiendes?

De preferencia algo multiplataforma, porque el programa será para Mac OS, Linux y Windows.

Saludos!
  #4 (permalink)  
Antiguo 20/01/2013, 22:00
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Manejar eventos en tiempo real C++

No se si Java soporta varios threads. De ser así, del lado del servidor podrían usar un thread para cada cliente que se conecte.
No creo que sea necesario usar un serial, con la IP basta.
Para ambos programas (cliente y servidor) debes usar sockets. Con respecto al cliente, no estoy seguro si hay alguna manera de mantener la portabilidad. Para sistemas unix puedes usar las funciones estándar encontradas en sys/socket.h. Para windows, usa winsock (winsock.h / winsock2.h).

Espero que te sirva!

  #5 (permalink)  
Antiguo 20/01/2013, 22:23
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Manejar eventos en tiempo real C++

Gracias por tu respuesta. Mira, encontré que SFML, mi biblioteca preferida para usar gráficos 2D soporta sockets (en SFML/Network.hpp), ahora, mi pregunta es:

Se pueden conectar todos los sockets de los clientes a un único socket del servidor?, ¿es esto conveniente?.

Yo no programo la parte del servidor, sino un amigo, pero estamos en comunicación constante. Y sí, java soporta multithreading.

¿Qué me aconsejan?

Saludos.
  #6 (permalink)  
Antiguo 21/01/2013, 10:05
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Manejar eventos en tiempo real C++

Sí, todos los clientes se conectan a un mismo servidor. Y como te dije, del lado del servidor puedes usar un thread para cada cliente que se conecta.

  #7 (permalink)  
Antiguo 21/01/2013, 17:31
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Manejar eventos en tiempo real C++

Del lado del servidor la idea es la siguiente:
Tenes un socket escuchando en el puerto esperando que un cliente quiera conectarse. Cuando lo encuentra y lo acepta, en C, la funcion accept te devuelve un nuevo socket que es con el cual el servidor se comunica con el cliente.
Mientras tanto el primer socket puedo volver a escuchar en espera de nuevos clientes.

PAra hacer mas facil la comunicacion y lidear con concurrencia y bloqueos, como te dijieron mas arriba, cada vez que se conecta un cliente se suele conrrer un nuevo threads pasandole el socket como argumento para que realize la comunicacion de forma independiente.
  #8 (permalink)  
Antiguo 25/01/2013, 04:21
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Manejar eventos en tiempo real C++

Para entender esto primero debes conocer el funcionamiento de las redes TCP/IP. Luego, las clases y métodos son simples aplicaciones del protocolo.

Te aconsejo leer sobre la capa de red, y en este caso, sobre las comunicaciones punto-punto de la capa de transporte usando puertos de escucha y eventos.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: eventos, manejar, real
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 19:27.