locked
Obtener la Ip del servidor TCP/IP Automaticamente RRS feed

  • Pregunta

  • Hola, estoy realizando un programa de comunicación Tcp/ip sockets en c#, este es el código del pc que envía los datos al pc del servidor

    Socket miPrimerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IPEndPoint miDireccion = new IPEndPoint(IPAddress.Parse("192.168.3.10"), 8080);//Ip del servidor, "la que quiero obtener"
                    miPrimerSocket.Connect(miDireccion);
                    string mensaje = textBox1.Text;//El mensaje a enviar
                    byte[] infoen = Encoding.Default.GetBytes(mensaje);
                    miPrimerSocket.Send(infoen, 0, infoen.Length, 0);
                    miPrimerSocket.Close();

    todo bien con la comunicación de pc a pc, como ven el código la tengo que poner la ip manualmente, ahora lo que yo quiero es hallar la forma de obtener el ip del servidor, dentro de todos los demás equipos que están conectados a la red, para asignársela y poder enviar datos.

    Hago esta pregunta  porque, cada vez que abro el programa tengo que ir a ver que ip tiene el servidor y cambiarla ya que las ips de la red son dinámicas no siempre es la misma,

    viernes, 13 de octubre de 2017 7:55

Respuestas

  • la ip la puedes dejar fija, la de cada equipo de la red no solo la del servidor, por lo tanto la ingresas en una ventana de configuracion la persistes en un archivo config.xml y luego la recuperas del mismo.

    si para comunicarte con el servidor lo tienes que hacer por internet y a esta ip es la que te refieres que es dinamica, entonces puedes contratar el servicio dyndns (dynamical dns).

    yo utilizo dyn.org, se paga cada 2 años y te permiten 30 ip's u$s 40 por año

    en cada computadora instalas un programa que cada vez que se cambia el ip se comunica con ellos y les pasa la nueva ip, o sea que durante un minuto por dia es el instante en que no sabes cual es la nueva ip.

    a) lo utilizo para hostear mi pagina en mi servidor

    yo mi pagina web la tengo instalada en un servidor propio y en el proveedor de nombres tengo asignado que quienes busquen : www.americasoftware.net los redireccione a http://amersoft.dyndns.org:5000/paginaweb/default.aspx

    en el router tengo configurado que todas las entradas para el puerto 5000 se redireccionen a 192.168.0.15 (esta es la ip fija del servidor en la intranet)

    b) para que mis clientes chateen conmigo (desde el programa que les vendi)

    yo hice un programa que funciona en el servidor y que monitorea la ip y graba un archivo en el disco duro con la ip externa, para hacerlo consulto http://checkip.dyndns.org y guardo esa ip en un archivo php (ellos ofrecen este servicio pero existen muchos otros)

    como arme un "chat ip-port" que esta en cada uno de mis programas y tambien en el servidor para que mis clientes puedan hacer consultas por chat.

    lo primero que hace es ese programa es leer ese archivo mediante:

    http://amersoft.dyndns.org/amsoft/getip.php

    en la primer comunicacion le transfiere a mi servidor la ip-port del cliente

    tuve que buscar mucho en internet para poder hacer que se comunicara por encima de los router en cualquiera de las 4 opciones: sin-con, sin-sin, con-sin, con-con (sin es sin router, con es con router, el primero es del servidor y el segundo del cliente)

    si bien tu puedes controlar desde tu lado si hay o no hay router, no lo puedes controlar desde el otro lado y queria resolver todas las opciones.

    en internet encontre muchos ejemplos que se supone que resolvian este tema de pasar por encima del router, pero realmente ninguno funcionaba al 100%

    luego de 4 semanas encontre la solucion, aqui hay un post sobre este tema si no lo encuentras lo busco y te paso el link


    Hugo González (Macgyber)


    viernes, 13 de octubre de 2017 9:38