Autor
|
Tema: Wisock - Hacer que no se quede con un solo cliente (Leído 3,019 veces)
|
Brian1511
Desconectado
Mensajes: 268
¿Quien soy esa es la gran pregunta?
|
Hola a todos amigos pues aqui me vengo a explicar. Tengo tiempo con una idea en la mente realmente simple, es crear un juego winsock especialmente de batallas con cartas , algo simple lo que me inspiro fue Ani dimension lo mejor que visto en mi vida de verdad que si!. Bien volviendo al tema, quiero saber como crear un servidor que escuche en el mismo puerto pero que se use de Sala . Me explico: Quiero que el servidor actue como una room donde estan todos los usuarios y de hay los usuarios elijen con quienes quieren batallar . Esto es todo espero que me puedan ayudar hasta la proxima. Haa y acepto comententarios y/o ayudas con el tema del juego.
|
|
|
En línea
|
Creador de BrainMind
|
|
|
engel lex
|
ya que el puerto solo puede escuchar una comunicación única por el puerto te recomiendo usar "división de tiempo" si un usuario se conecta un nuevo lo guardas en una lista (array) de usuarios, luego vas pasando el "token" entre los usuarios es decir, le envías que es su turno, el se comunica, cierras con el, vas al siguiente de la lista, y así vas, cada quien tiene un turno para hablar claro este método tiene un punto débil, es sensible a cantidad de usuarios y a retraso... es decir si tienes 10 usuarios con un ping de 200ms cada uno, un usuario solo vería actualización cada 2 segundos mi recomendación es usar varios puertos reservas un lote de puertos (ej. del 100 al 200) y usas 1 puerto de conexión, el usuario se conecta y le envías que puerto le toca (ej el puerto 105), entonces abres el puerto 105 en modo escucha (listen) y el usuario abre la conexión para entrar por ahí y ahí manejas los datos... defecto de este método, un servicio puede usar inesperadamente un puerto bloqueándolo, y que tienes un limite de usuarios definido por la cantidad de puertos espero que te sirva de algo mi info
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
noalg
Desconectado
Mensajes: 26
|
bueno en cierto modo deberias hacer lo que dijo engelx pero no estrictamente, en el servidor debes poner un socket escuchando en un puerto x, cada vez que un cliente intenta conectarse a tu servidor por ese puerto x, debes crear otro socket, probablemente almacenar todos estos sockets en un array, no es necesario usar mas que un puerto. Una vez realizada la conexion, y empieces la partida tienes dos opciones, conseguir que ambos clientes se conecten entre ellos (cliente <-> cliente) o (cliente <-> servidor <-> cliente). La segunda es obviamente mas lenta, pero para un juego de cartas que no creo que sea muy rapido ni que necesites enviar mucha informacion por lo que puedes elegir la segunda opcion. No es exactamente lo que tu quieres pero establece multicobexion, hechale un vistazo que te aclarara cosas: http://www.indetectables.net/viewtopic.php?p=34880
|
|
|
En línea
|
|
|
|
Brian1511
Desconectado
Mensajes: 268
¿Quien soy esa es la gran pregunta?
|
gracias a todos por contestar de verdad que me gustan sus respuestas explican muchas cosas.
Probe el link que me dio noalg y me gusto el ejemplo pero realmente quiero saber como puedo hacelo de otra manera este tiene como 5 errores...
Pero bueno espero que me puedan contestar con algo mas explicativo..
Un saludo y muchas gracias!
|
|
|
En línea
|
Creador de BrainMind
|
|
|
|
Brian1511
Desconectado
Mensajes: 268
¿Quien soy esa es la gran pregunta?
|
Gracias nolag esta perfecto , voy a hacer lo que me escribes empesare a crearlo y pues si tengo algun error o duda pues la diga..
Gracias y un saludo!
|
|
|
En línea
|
Creador de BrainMind
|
|
|
DarkMatrix
Desconectado
Mensajes: 150
Nuestro Limite es la Imaginacion
|
En el ejemplo que te pase no hace mucho esta lo que quieres hacer, al menos algo parecido, hablamos de un chat multi-usuarios con posibilidad de mensajes privados estre usuarios, lo que tu llamas salas (conexion entre 2 o mas clientes independiente de los demas clientes conectados al servidor) es lo mismo que el sistema de whispers (chat privados) que usan en el ejemplo. Un cliente le indica al servidor que quiere empezar un chat privado con otro usuario (independiente del chat general), para esto el servidor necesita saber con que usuario quiere empezar el chat y de este modo poder redirigir los mensajes de un cliente a otro, siendo el servidor un intermedio de comunicacion. Tal y como te comento el usuario @noalg en este caso es una comunicacion del tipo (cliente <-> servidor <-> cliente). En el ejemplo, cada cliente ya tiene la lista de usuarios que estan conectados al sevidor, por lo que el usuario selecciona con quien quiere empezar el chat privado y le envia al servidor el nick del usuario y el mensaje que quiere enviarle.. El servidor agarra estos datos, busca en que sock esta conectado el usuario con el nick especificado y redirige el mensaje hacia ese sock... Cliente1 -> Servidor = ChatPrivado(NickCliente1,NickCliente2,Mensaje) Servidor Analiza el paquete y busca en que sock esta conectado NickCliente2 cuando lo encuentra entonces redirige los otros 2 datos, que son el NickCliente1 y el mensaje... Servidor -> Cliente2 = ChatPrivadoRecibido(NickCliente1,Mensaje)
|
|
|
En línea
|
Todo aquello que no se puede hacer, es lo que no intentamos hacer. Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0) Desing by DarkMatrix
|
|
|
Brian1511
Desconectado
Mensajes: 268
¿Quien soy esa es la gran pregunta?
|
DARK eres mi heroe , en serio Lo digo tus aportes son 100pre utiles y responden a mis dudas.
una dudita mas,podria utilizarlo a la hora de hacer los lobbis? usar esa mismA tecnica?
|
|
|
En línea
|
Creador de BrainMind
|
|
|
DarkMatrix
Desconectado
Mensajes: 150
Nuestro Limite es la Imaginacion
|
Si puedes, en el ejemplo seria como tener varias salas de chat generales...
|
|
|
En línea
|
Todo aquello que no se puede hacer, es lo que no intentamos hacer. Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0) Desing by DarkMatrix
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como hacer un cliente para latinchat
Programación Visual Basic
|
elLFaNtAsMa-pc
|
1
|
4,773
|
24 Septiembre 2005, 02:31 am
por NYlOn
|
|
|
solo logro hacer transferencia de archivos de menos de 2mb, que puedo hacer?
Programación Visual Basic
|
Proxy Lainux
|
6
|
4,844
|
9 Junio 2008, 03:00 am
por LeandroA
|
|
|
imposible hacer andar cliente telnet en vb.net 2010
.NET (C#, VB.NET, ASP)
|
P4nd3m0n1um
|
3
|
3,237
|
27 Agosto 2012, 05:51 am
por Novlucker
|
|
|
Como puedo hacer un sensor que pite cuando la puerta quede abierta
Electrónica
|
eda6
|
4
|
16,526
|
30 Octubre 2012, 18:32 pm
por juandiegomu
|
|
|
Ayuda ¿como hacer un cliente https?
PHP
|
joz_z
|
2
|
2,695
|
3 Marzo 2014, 18:32 pm
por joz_z
|
|