|
1622
|
Programación / Programación C/C++ / Re: Abrir multiples conexiones Sockets C
|
en: 10 Noviembre 2015, 10:53 am
|
Los sockets pueden ser "bloqueantes" o "no bloqueantes". En el caso que comentas, probablemente sea bloquenate. Para ponerlo "non-blocking", no te puedo ayudar, que no utilizo unix. Busca por ahí, y encontrarás. De todos modos, tal ocmo los tienes, otra opción es tener un thread para leer del servidor, y luego otro thread para los sockets ya abiertos (o un thread por socket, tú verás). Claro que, para recv, me parece más cómodo un socket no bloqueante. Lo dicho, echa un vistazo para ver cómo cambiar. En caso de sockets de Windows, se haría así: u_long block = 1 // 1 or 0, bloquing or non blocking; ioctlsocket(sock, FIONBIO, &block);
|
|
|
1623
|
Programación / Programación General / Re: Orientación en un pequeño proyecto
|
en: 10 Noviembre 2015, 09:27 am
|
Qué clases hacer es algo que tendrás que ver tú, según cómo lo quieras desarrollar.
De todos modos, un servidor simple, puede tener 1 bucle para encontrar nuevos clientes y un bucle para leer y responder a las peticiones de los clientes. Luego ya puedes implementar PINGS para evitar sockets desconectados ocupando memoria, o una consola para controlar desde el servidor, ya según te convenga.
El cliente, por su parte, habría de tener 2 threads (según como lo orientes, desde luego). En vez de ocupar un thread en un bucle infinito leyendo del servidor, puedes tener un timer que haga eso. En cualquier caso, <interfaz gráfica><-><socket>, dos ramificaciones diferentes, comunciadas entre sí, desde luego.
Esa es una forma posible, ya verás qué prefieres.
Esquematiza el proyecto, dibuja un diagrama de flujo si te es más cómodo.
De todos modos, trata de empezar a hacer al menos un servidor que reciba conexiones, algo así. No te puedo decir cómo hacer todo el proyecto xD
|
|
|
1624
|
Programación / Programación C/C++ / Re: Abrir multiples conexiones Sockets C
|
en: 10 Noviembre 2015, 09:17 am
|
Te pongo un ejemplo práctico: socket *sockets; listener li; crearArray(&sockets); inicializarSocketDeEscucha(li); while(true){ socket sock; sock = nuevoCliente(listener); if(sock) añadirSocket(&sockets, sock); porCadaSocket -i-{ escucharYResponder(sockets[i]); } }
En fin, es un esquema, con funciones que creo que entiendes lo que hacen. En bucle, haces estas acciones: -1: Encuentras nuevos clientes si los hay. -2: Escuchas y respondes a cada cliente. Si por ejemplo un cliente te envía un mensaje de chat, reenvías ese mensaje a todos los demás clientes.
|
|
|
1625
|
Programación / Programación General / Re: Orientación en un pequeño proyecto
|
en: 9 Noviembre 2015, 18:22 pm
|
Si es eso lo que quieres hacer, tendrás que hacer el cliente en Android, y el servidor. El servidor puede ser http, sí, pero me parece una pérdida de recursos. Sería mejor hacer un servidor dedicado a ese chat.
Sabiendo Java, Sockets y Threads (opcionalmente), no deberías tener problema. Solo idea el protocolo mediante el cual el servidor y los clientes se enviarán datos, y ponte a ello.
Para empezar, puedes hacrlo todo en java sin Android, por comodidad a la hora de depurar el servidor. Además, si lo haces en Java todo, puedes crear y compartir clases entre los proyectos, para así serializar datos a tu gusto y sin problemas.
Any question, be free.
|
|
|
1627
|
Foros Generales / Foro Libre / Re: El Parlament aprueba la declaración de independencia con 72 votos a favor
|
en: 9 Noviembre 2015, 16:46 pm
|
Es totalmente absurdo que una comunidad se crea con el poder de secesionarse. Cataluña es de España. Cataluña, como el resto de comunidades autónomas, no tiene poder propio para irse. No tiene más poder que el que España le otorga. Es una vergüenza que el gobierno permita este tipo de actos, que son verdaderas ofensas a España.
En otros tiempos, a este tipo de cosas se les llemaba declaraciones de guerra y traición.
Sorry, tenía que soltarlo :3
|
|
|
1628
|
Programación / Programación C/C++ / Re: Abrir multiples conexiones Sockets C
|
en: 9 Noviembre 2015, 13:35 pm
|
Los sockets abiertos, los conservas en un array. Luego, basta iterar por cada socket del array, y leer en caso de que haya bytes que leer, y enviar datos si es necesario.
Deberías estructurar tu programa. Crea funciones para hacer el código legible.
|
|
|
1629
|
Programación / Programación C/C++ / Re: sudoku
|
en: 8 Noviembre 2015, 21:04 pm
|
Presuponiendo las reglas del sudoku: 1: Comprueba fila a fila, que estén los 9 números. 2: Comprueba columna a columna, que estén los 9 números.
Esas 2 se pueden englobar en un: para caa número de la matriz, comprueba si se repite en su fila o columna. Si se repite, es incorrecto.
Por último, ve cuadro a cuadro comprobando si existe. Esta parte es la más complicada, y puedes dejarla de momento para el final.
|
|
|
|
|
|
|