[ Foro de C# ]

Envio de multiple datos por socket

13-Nov-2013 17:54
Jean Carlos Arguedas
4 Respuestas

Hola que tal a todos, soy nuevo en este foro y pos me recomendaron usarlo ya que es muy fácil de usar es mas orientado a los que estamos aprendiendo a programar.
Ok, mi duda es la siguiente.

Estoy haciendo un juego STOP (país, fruta, color, animal) ya tengo el cliente/servidor y puedo conectar los clientes que sean al servidor, la cosa es que ocupo enviar con el cliente los nombres juntos (correspondientes a pais, fruta, color, animal) a la misma ves por el socket para que el servidor los reciba y los compare con los datos que hay en la BD mysql, pero la dura por el momento es, cómo enviar todos los datos a la ves y que el servidor los reciba igual para luego comparar cada uno con los de la base de datos. Por el momento ocupo saber como hago ese proceso en C#. Gracias


15-Nov-2013 11:05
Nacho Cabanes (+84)

En mis apuntes, en el apartado 12.6 de la versión PDF, tienes ejemplos básicos de cómo conectar a otro equipo mediante sockets y a un servidor web. Te incluyo aquí el ejemplo de sockets, por si te puede servir como punto de partida.


// Ejemplo de envio y recepción de frases a través de la red

using System;
using System.IO;    // Para Stream
using System.Text;  // Para Encoding
using System.Net;   // Para Dns, IPAddress
using System.Net.Sockets;    // Para NetworkStream

public class EjemploSockets
{

  static string direccionPrueba = "localhost";
  static int puertoPrueba = 2112;
  
  private static void enviar(string direccion, int puerto, string frase)
  {
    TcpClient cliente = new TcpClient(direccion, puerto);
    NetworkStream conexion = cliente.GetStream();
    byte[] secuenciaLetras = Encoding.ASCII.GetBytes( frase );

    conexion.Write(secuenciaLetras, 0, secuenciaLetras.Length);

    conexion.Close();
    cliente.Close();
  }
  
  private static string esperar(string direccion, int puerto)
  {
    // Tratamos de hallar la primera IP que corresponde
    // a una dirección como "localhost"
    IPAddress direccionIP = Dns.Resolve(direccion).AddressList[0];
    // Comienza la espera de información  
    TcpListener listener = new TcpListener(direccionIP,puerto);
    listener.Start();
    TcpClient cliente = listener.AcceptTcpClient();
    NetworkStream conexion = cliente.GetStream();
    StreamReader lector = new StreamReader(conexion);

    string frase = lector.ReadToEnd();

    cliente.Close();
    listener.Stop();
    
    return frase;
  }

  public static void Main()
  {
      Console.WriteLine("Pulse 1 para recibir o 2 para enviar");
      string respuesta = Console.ReadLine();
      
      if (respuesta == "2")  // Enviar
      {
          Console.Write("Enviando... ");
          enviar( direccionPrueba, puertoPrueba, "Prueba de texto");
          Console.WriteLine("Enviado");
      }
      else   // Recibir
      {
          Console.WriteLine("Esperando... ");
          Console.WriteLine( esperar(direccionPrueba, puertoPrueba) );
          Console.WriteLine("Recibido");
      }
  }
}




15-Nov-2013 17:38
Jean Carlos Arguedas

que tal Nacho, gracias por su pronta respuesta, tu ejemplo esta muy claro, quisiera saber como accedo a tus apuntes. Me interesa saber todo sobre sockets.


15-Nov-2013 18:22
Nacho Cabanes (+84)

Mis apuntes están en versión web resumida en estas mismas páginas, y en versión PDF más detallada en mi web:

http://nachocabanes.com/csharp/


16-Nov-2013 02:53
Jean Carlos Arguedas

Le agradezco mucho la ayuda.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)