elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Ayuda] C# Recibir y enviar paquetes,conexion entre Servidor y cliente AS2 o SWF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] C# Recibir y enviar paquetes,conexion entre Servidor y cliente AS2 o SWF  (Leído 4,758 veces)
Xx-Zerooh-xX

Desconectado Desconectado

Mensajes: 3



Ver Perfil
[Ayuda] C# Recibir y enviar paquetes,conexion entre Servidor y cliente AS2 o SWF
« en: 19 Enero 2015, 15:11 pm »

Hola, me gustaria que me hecharan una mano en esto, llevo 3 dias tratando con esto de los socket en c# lamentablemente google no me ha brindado mucha informacion.

Empece este emulador hace algunos dias, lo que quiero hacer es que múltiples clientes se conecten al servidor, encontré como hacerlo buscando y buscando por google.

Con este codigo, el servidor escucha al cliente, ya lo probé y el cliente que esta hecho en adobe flash, al ingresar los datos del login queda esperando a recibir una respuesta y si cierro el emulador, en el cliente aparece "Conexion interrumpida con el servidor" ¿Quieres volver a intentar conectarte al juego?.

Con un Sniffer o husmeador de trafico de red, Analice los paquetes que se envian, y son dos paquetes : "[Af][DatosDeLaCuenta]" y [Ax][NoRecuerdoDeQueEraXD] pero el que importa es el AF.

Lo que quiero lograr es que el emulador analice si se recibe el paquete AF y envie el paquete [AlEc][DarAccesoALaCuentaIngresada] y lograr pasar de la pantalla login.

Aqui les dejo el codigo que escucha al cliente, me falta el para analizar y me gustaria que me enseñaran como hacer lo que les pido, Muchas Gracias. Cualquier cosa comenten por favor.
Código
  1. public class GestorEntrada
  2.    {
  3.        //En estas variables esta almacenado los datos del servidor que pregunta a un archivo de texto cual es la ip y el puerto de entrada
  4.        public static string IP = Ajustes.IP_SERVIDOR;
  5.        public static int Puerto = Ajustes.RealmPort;
  6.  
  7.        public static IPAddress ipAddress = Dns.GetHostEntry(IP).AddressList[0];
  8.        public static IPEndPoint localEndPoint = new IPEndPoint(ipAddress, Puerto);
  9.        public static Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  10.  
  11.        public static void EscucharCliente()
  12.        {
  13.  
  14.            // Crear un TCP/IP socket.
  15.  
  16.            // Enlazando el socket a el punto de encuentro y escuchar las conexiones entrantes
  17.            listener.Bind(localEndPoint);
  18.            listener.Listen(100);
  19.  
  20.  
  21.            ColorConsola.Info("Esperando conexiones entrantes...");
  22.  
  23.  
  24.        }
  25. }


« Última modificación: 19 Enero 2015, 15:28 pm por Eleкtro » En línea

.::IT::.

Desconectado Desconectado

Mensajes: 166



Ver Perfil
Re: [Ayuda] C# Recibir y enviar paquetes,conexion entre Servidor y cliente AS2 o SWF
« Respuesta #1 en: 20 Enero 2015, 06:39 am »

Ummm espero que esto de ayude para comenzar yo usaria un TcpListener en lugar de socket, yo usaria 2 clases una que es la que escucha en determinado puerto(Servidor.cs), y otra que procesa(Procesar.cs).
El funcionamiento seria :
1-. Servidor inicia un TcpListener en un determinado puerto y esta a la escucha de las peticiones del cliente usando el metodo "AcceptTcpClient()".
2-. Recibe la peticon del cliente y crea una instancia de la clase Procesar(new Procesar(datoscliente)) que tiene como parametro un odjecto TcpClient(el que es creado usando AcceptTcpClient()).
3-.Teniendo mi objeto "Procesar" creo un nuevo Thread(proceso) en el cual invoco a un metodo al que llamaria "process"
4.-Otra ves llamo a AcceptTcpClient().

Lo que lo hace multiusuario es que cada peticon se procesa en un Thread diferente eso es todo aqui un ejemplo:

Servidor.cs(Escrito directamente aqui en la ventana de posteo no se si compile pero te dara una idea)

Código
  1. public class Servidor
  2. {
  3.      private int puerto = 8069; //El puerto en el que corre
  4.      TcpListener listener;
  5.  
  6.      public void listen()
  7.      {
  8.          listener = new TcpListener(IPAndress.Any,puerto);
  9.          listener.Start();
  10.  
  11.          //Comiensa el ciclo repetitivo para aceptar peticiones
  12.          while(true)
  13.         {
  14.              TcpClient s = listener.AcceptTcpClient();//En este punto el programa esta detenido esperando al cliente
  15.              Procesar p = new Procesar(s);//Aqui ya recibi una peticion
  16.              Thread t = new Thread(new ThreadStart(p.process)); // aqui la proceso en un nuevo Thread
  17.             t.Start();//Listo es todo nuevamente regresa a s = listener.AcceptTcpClient(); y se repite el proceso
  18.         }
  19.      }
  20. }

Aqui el codigo de la clase Procesar.cs

Código
  1. public class Procesar()
  2. {
  3.       TcpClient c;
  4.       Stream input;//para leer los datos del cliente
  5.       StreamWriter output;//para escribir la respuesta
  6.  
  7.       public Procesar(TcpClient socket)
  8.       {
  9.             this.c= socket;
  10.       }
  11.  
  12.       public void process()
  13.      {
  14.             input = new BufferedStream(c.GetStream());
  15.             output = new StreamWriter(new BufferedStream(c.GetStream()));
  16.             //Aqui el codigo para procesar input
  17.             //la respuesta la enviamos escribiendo en  output usando Write o WriteLine
  18.  
  19.             output.Flush();//invocamos al metodo Flush del output
  20.             c.close();//cerramos el TcpClient
  21.      }
  22. }

Bueno esa es la extructura basica con la que yo trabajaria aunque e visto otras formas pero que no me convecieron mucho.

Por ultimo usamos nuestra clase servidor en nuestro metodo principal con

Servidor myServer=new Servidor()
myServer.Start();



« Última modificación: 20 Enero 2015, 07:06 am por .::IT::. » En línea

Simplemente .::IT::.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Conexión entre cliente y servidor sin transmisión de IP « 1 2 »
Programación Visual Basic
rubn 15 5,648 Último mensaje 3 Noviembre 2009, 08:43 am
por Tumerek
Código de Cifrado de Paquetes cliente-servidor
Programación Visual Basic
enanooh 2 2,381 Último mensaje 1 Junio 2009, 04:36 am
por enanooh
Problema para enviar/recibir datos por servidor
Redes
crazykenny 0 1,270 Último mensaje 19 Noviembre 2011, 19:42 pm
por crazykenny
Enviar y recibir paquetes WPE Pro
Dudas Generales
xxmiguelito22xx 0 1,058 Último mensaje 27 Mayo 2016, 21:24 pm
por xxmiguelito22xx
Enviar datos entre servidor y cliente.
Análisis y Diseño de Malware
dopr 1 1,109 Último mensaje 9 Agosto 2016, 14:51 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines