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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 [170] 171 172 173 174 175 176 177 178 179 180 181
1691  Programación / .NET (C#, VB.NET, ASP) / [Tutorial] Tcp/IP Sockets C# en: 12 Marzo 2010, 22:40 pm
Una red de computadoras (ordenadores) consiste en máquinas interconectadas mediante canales de comunicación.  Estas máquinas son Hosts y Routers. Los Hosts son computadoras que ejecutan aplicaciones, por ejemplo un navegador. Los Routers son equipos cuyo trabajo es retransmitir información de un canal de comunicación a otro. Estos pueden ejecutar programas, pero normalmente no son aplicativos. Para este post un canal de comunicación es un medio de transmisión de secuencias de bytes de un host a otro, este puede ser broadcast, como Ethernet, un modem dial-up, o algo más sofisticado.

Otro término que tenemos que definir es Protocolo. Un protocolo es un acuerdo acerca de los paquetes intercambiados por comunicación de los programas y lo que significan, además describe como está estructurado, por ejemplo: donde está la información del destinatario en el paquete y de que tamaño es. Un ejemplo es Http (Hypertext Transfer Protocol) que resuelve el problema de transferir objectos hipertexto entre servidores y hacerlo entendible por personas.

Ahora vamos directo al grano: ¿Qué es un Socket?

Un socket es una abstracción que permite a la aplicación “enchufarse” a la red para poder recibir y enviar data. Los principales tipos de socket hoy en día son los Stream Socket y los Datagram Socket. Los Stream Sockets utilizan TCP e IP para proveer n servicio confiable. Los Datagram Sockets usan UDP.

Otro concepto importante son el Stream Reader y el Stream Writer.

Son clases que nos ayudan a escribir y leer del buffer del socket. Sino existieran habría que leer el buffer y escribir en él directamente, cosa que es un poco engorrosa e innecesaria para la mayoría de las aplicaciones.

Código de ejemplo:



Codigo Servidor
Código
  1. public class NetworkServer
  2.  
  3. {
  4.    public static void Main()
  5.    {
  6.       //creamos un thread para que el server
  7.       //se ejecute en paralelo con el cliente
  8.       //esto es solo por motivos prácticos del demo
  9.       new Thread(new ThreadStart(
  10.            delegate {
  11.                new NetworkServer().Start(); }
  12.                    )).Start();
  13.  
  14.       //Iniciamos el Cliente
  15.       new Client().Connect();
  16.       Console.WriteLine("Listo");
  17.       Console.Read();
  18.    }
  19.  
  20.    public  void Start()
  21.    {
  22.       // Creamos un TcpListener y le indicamos que
  23.       //puerto va a poner en escucha.
  24.       TcpListener tcpListener = new TcpListener(9898);
  25.  
  26.        //Iniciamos la esucha
  27.       tcpListener.Start();
  28.  
  29.       //Este método queda bloqueado hasta que
  30.       //se conecte un cliente
  31.       Socket socketForClient = tcpListener.AcceptSocket();
  32.       if (socketForClient.Connected)
  33.       {
  34.  
  35.          // Si se conecta
  36.          Console.WriteLine("Cliente conectado.");
  37.          //Creamos el networkSream, el Reader y el writer
  38.  
  39.          NetworkStream networkStream =
  40.                   new NetworkStream(socketForClient);
  41.  
  42.          StreamWriter streamWriter =
  43.                   new StreamWriter(networkStream);
  44.  
  45.          StreamReader streamReader =
  46.                   new StreamReader(networkStream);
  47.  
  48.          //Esta es la data a enviar.
  49.          string theString = "Esta es la data de envio";
  50.  
  51.          try
  52.          {
  53.              //Escribimos la data en el stream
  54.              streamWriter.WriteLine(theString);
  55.  
  56.              //Ahora le decimos que la mande.
  57.              streamWriter.Flush();
  58.  
  59.              //Esperamos data del cliente
  60.              //Y la escribimos por consola.
  61.               theString = streamReader.ReadLine();
  62.               Console.WriteLine(theString);
  63.            }
  64.            finally
  65.            {
  66.                //Cerramos las conexiones
  67.                streamReader.Close();
  68.                streamWriter.Close();
  69.                networkStream.Close();
  70.                socketForClient.Close();
  71.            }
  72.        }
  73.    }
  74. }
  75.  


Codigo Cliente
 
Código
  1. public class Client
  2. {
  3.    public void Connect()
  4.    {
  5.        TcpClient socketForServer;
  6.        string server = "localhost";
  7.  
  8.        try
  9.        {  
  10.            //Creamos un TcpCliente y le pasamos
  11.            //el server y el puerto.
  12.            socketForServer = new TcpClient(server, 9898);
  13.        }
  14.        catch
  15.        {
  16.            Console.WriteLine(
  17.            "No se pudo conectar a {0}:9898", server);
  18.            return;
  19.        }
  20.  
  21.  
  22.        //aqui es lo mismo que en el server. Usamos StreamWriter y Reader.
  23.        NetworkStream networkStream = socketForServer.GetStream();
  24.  
  25.        StreamReader streamReader =
  26.              new System.IO.StreamReader(networkStream);
  27.  
  28.        StreamWriter streamWriter =
  29.              new System.IO.StreamWriter(networkStream);
  30.  
  31.        try
  32.        {
  33.            string outputString = streamReader.ReadLine();
  34.            Console.WriteLine(outputString);
  35.            streamWriter.WriteLine("Mensaje desde el Cliente");
  36.            streamWriter.Flush();
  37.        }
  38.        catch
  39.        {
  40.            Console.WriteLine("Exception reading from Server");
  41.        }
  42.        finally
  43.        {
  44.            networkStream.Close();
  45.        }
  46.    }
  47. }






Esto es un demo muy básico, pero funciona correctamente. Se le pueden añadir funcionalidades como multithreading para poder aceptar a varios clientes al mismo tiempo.
1692  Programación / .NET (C#, VB.NET, ASP) / Re: array de controles en: 12 Marzo 2010, 16:45 pm
Hola, no se si entendí bien. A ver, tienes varios PictureBox? Y quieres establecerle a un pictureBox aleatorio una imagen aleatória?

Uhm, creo que va algo así:

Código
  1. //Escenario, primero crear varios picturebox en el formulario.
  2.  
  3. List<PictureBox> pictureBoxList = new List<PictureBox>();
  4. List<Image> imagesList = new List<Image>();
  5.  
  6. imageList.Add(Image.FromFile("SampleImage1.jpg"));
  7. imageList.Add(Image.FromFile("SampleImage2.jpg"));
  8. imageList.Add(Image.FromFile("SampleImage3.jpg"));
  9.  
  10. //Con esto metes todos los PB en una lista.
  11. foreach (Control c in this.Controls)
  12. {
  13.    if(c is PictureBox)
  14.    {
  15.        pictureBoxList.Add(c as PictureBox);
  16.    }
  17. }
  18.  
  19.  
  20. Random rand = new Random();
  21.  
  22. pictureBoxList[rand.Next(0, pictureBoxList.Count)].Image = imagesList[rand.Next(0, imagesList.Count)];
  23.  

Esto debería servirte :D
1693  Programación / .NET (C#, VB.NET, ASP) / Re: Multilingual en C# en: 12 Marzo 2010, 16:33 pm
A la orden :)
1694  Programación / .NET (C#, VB.NET, ASP) / Re: [Mod]Problemas Consulta SQL desde VS 2008 en: 12 Marzo 2010, 16:32 pm
Citar
Ahora veo que solo el segundo retorno tiene el "sp_", así que descarto lo anterior, si debería de "partirse"

Nop, Fíjate en el nombre
Código:
public static SqlDataReader ObtenerDataReader

Y el que llama dentro de éste es: obtenerDataReader, La O de obtener es minúscula, y C# es case sensitive.

Aun le falta por publicar ese método:
Código:
obtenerDataReader
..
1695  Programación / .NET (C#, VB.NET, ASP) / Re: [Mod]Problemas Consulta SQL desde VS 2008 en: 11 Marzo 2010, 20:26 pm
Te falto publicar el ObtenerDataReader :rolleyes:

Y sigo sin ver la lógica, creas un sqlcommand, pero nunca lo retornas ni nada, dices que eso te funciona :huh:


Exacto, yo tampoco entiendo. Publica la clase completa..

Un saludo
1696  Programación / .NET (C#, VB.NET, ASP) / Re: [Mod]Problemas Consulta SQL desde VS 2008 en: 11 Marzo 2010, 19:55 pm
Que clase es:  SqlAccesoDatos. Puedes publicarla aca.. saludos
1697  Programación / .NET (C#, VB.NET, ASP) / Re: Lineas de separacion de funciones como vs.net en: 11 Marzo 2010, 19:53 pm
Hola, hermano, que tal si usas un tree view? jaja no se, separas cada linea y capaz que funciona, no se, lo malo es que no puedes escribir así tan fácil.. :P Pero podrías tener dos modos: Edicion y vista.. jeje Es lo más fácil que se me ocurre :P

COn GDI Sería un fume! habría que problarlo.. Y de la forma que dice Manulomm es la más intermedia en dificultad..

Si lo consigues nos avisas!
1698  Programación / .NET (C#, VB.NET, ASP) / Re: Multilingual en C# en: 11 Marzo 2010, 17:47 pm
El esta confunciendo Multilingual con Traduction.. Multilingual es la capacidad que tiene un proyecto en .Net para utilizar varios idiomas, caso contrario a un Traductor..

Cuando creas un formulario, le escribes textos en los labels y eso.. Luego cambias el idioma del formulario y le colocas otro texto correspondiente al idioma que seleccionaste,, y asi por cada idioma que quieras que maneje tu aplicacion. Como vez, no tiene nada que ver con traducciones..

Para hacer un traductor tienes que implementar un algoritmo de reconocimiento  de oraciones, llevar la oración a una estructura imparcial, y luego procesarla a cualquier otro idioma..

un saludo!
1699  Programación / .NET (C#, VB.NET, ASP) / Re: manejar archivos abiertos como pestañas en: 11 Marzo 2010, 17:43 pm
Puedes implementar tu propio control, o, una manera mucho más facil que con el tabcontrol es con una barra de menu, cada item del menu tienen que ser tipo boton con imagen, y ya :D . Puedes añadirle, si quieres, una ventana MDI aunque no es obligatorio.

Un saludo...
1700  Programación / .NET (C#, VB.NET, ASP) / Re: ayuda para polpular un dropdowntable desde un xml en: 10 Marzo 2010, 22:47 pm
Como es un RSS, y de la forma en como lo estas haciendo, siempre vas a cargar todo, Si quieres mostrar solo las noticias nuevas, vas a tener que usar AJAX y codificar el comportamiento de la lectura del RSS :)

saludos! Dime si te fue de ayuda, sino te seguimos ayudando!
Páginas: 1 ... 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 [170] 171 172 173 174 175 176 177 178 179 180 181
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines