Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Brian1511 en 12 Agosto 2013, 07:33 am



Título: Wisock - Hacer que no se quede con un solo cliente
Publicado por: Brian1511 en 12 Agosto 2013, 07:33 am
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.
 :D :D


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: engel lex en 12 Agosto 2013, 08:01 am
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 :P


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: noalg en 12 Agosto 2013, 12:00 pm
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


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: Brian1511 en 12 Agosto 2013, 20:17 pm
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!


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: noalg en 12 Agosto 2013, 21:51 pm
Creo que aqui vendra todo mejor explicado, no solo la multiconexion sino todo lo relaccionado con sockets. No tengo tiempo ni estoy en mi ordenador para hacerte un ejemplo yo personalmente, espero que te sirva

http://monografias.com/trabajos30/tutorial-visual-basic/tutorial-visual-basic.shtml

Intenta empezar a codearlo y si no te funciona vuelve con las dudas y partes de codigo erroneo.


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: Brian1511 en 13 Agosto 2013, 00:28 am
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!


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: DarkMatrix en 13 Agosto 2013, 09:02 am
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)

Sabes este ejemplo te ayudara mucho: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=60099&lngWId=1


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: Brian1511 en 13 Agosto 2013, 18:54 pm
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?


Título: Re: Wisock - Hacer que no se quede con un solo cliente
Publicado por: DarkMatrix en 13 Agosto 2013, 20:52 pm
Si puedes, en el ejemplo seria como tener varias salas de chat generales...