Mi primer programa usando un socket xD (C#)

12:43 am Programación

Así es, hoy he realizado dos cosas:

1) Mi primer programa usando los tan famosos sockets
2) Mi primer programa usando C# :P

Estoy tratando de aprende C# por la feria de ciencias en hackerss.com y bueno, me he integrado al grupo de programación :o .

En fin 8), puede seguir un curso rápido para crear tu primer socket en 5 min. (si es que sueles leer un poco despacio XD) aqui: http://foro.elhacker.net/index.php?topic=165986.0 ;)

Yo he modificado un poco el código fuente para que en el programa principal sólo sea cosa de poner: interfaz(conexion(ip,puerto));, quedando de la siguiente forma:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace Sockets

{
    class Program
    {
        static public Socket conexion(string dir, int puerto)
        {
            IPAddress ip = Dns.GetHostEntry(dir).AddressList[0];
            IPEndPoint canal = new IPEndPoint(ip, puerto);
            Socket sockete = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sockete.Bind(canal);
            sockete.Listen(100);
            Socket link = sockete.Accept();
            return link;
        }
        static public void interfaz(Socket link)
        {
            byte[] bytes = new byte[1024]; //Declaramos un array de bytes de longitud 1024
            int count;
            String data = ""; //Declaramos data, que sera donde se almacenaran los datos

            do //Bucle Do/While
            {
                count = link.Receive(bytes); //Recibimos los datos enviados y lo guardamos en count.
                data = System.Text.Encoding.ASCII.GetString(bytes, 0, count); //Lo codificamos a cadena (ya que se envian como bytes)
                if (data != "exit\n") //Mientras lo recibido no sea exit + \n (es decir, exit + Intro, ya que intro tambien se envia)
                {
                    Console.Write("Se a recibido: {0}", data); //Mostramos lo recibido pro pantalla
                }

            } while (data != "exit\n");  //Mientras lo recibido no sea exit + Intro se continua el bucle, si recibimos exit + intro, salimos del bucle

            Console.WriteLine("Se ha finalizado la conexión"); //Avisamos qde que se a terminado la transferencia de datos

            byte[] msg = System.Text.Encoding.ASCII.GetBytes("\n\nFinalizada conexion con la aplicacion"); //Codificamos de string a byte el siguiente mensage para que se pueda enviar al NetCat (Cliente)

            link.Send(msg); //Enviamos el mensage al cliente
            link.Shutdown(SocketShutdown.Both); //"Apagamos" los sockets
            link.Close(); //Los cerramos
        }
        static void Main(string[] args)
        {
            interfaz(conexion("localhost", 666));

        }
    }
}

Las imagenes de demostración (para los que piense que soy chismoso xD):

Netcat:

NetCat

Programa en ejecución:

Ejecucion

Las sugerencias/criticas son bienvenidas (aunque no es nada :P ).

Nos vemos!!.

p.d Hoy el nuevo capitulo de prison break :D

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 3 out of 5)
Loading ... Loading ...

Temas Relacionados:
  • Usando Graphviz para hacer gráficas de autómatas
  • Pintura y escultura
  • Usando TOR en GNU/Linux
  • Un pingüino navideño xD
  • Y tú, ¿Eres mexicano?
  • 3 Responses

    1. GamA Says:

      Si no fuera porque has copiado el código de:

      http://foro.elhacker.net/index.php/topic,165986.msg925980.html

      Al menos podias haber cambiado el nombre de las variables…

    2. jorge Says:

      jajajajajaja se paso GamA con es ecomentario jajajajaja

    3. soullost Says:

      LOL, no entiendo que parte del post no entienden que no es mi código (sólo lo ajuste un poco), bien cito la fuente.

    Leave a Comment

    Your comment

    You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.