Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





c# Como conseguir la ip propia

Iniciado por lauri, 04 de Julio de 2006, 01:52:54 PM

« anterior - próximo »

lauri

Bueno en primer lugar daros las gracias a todos.

Creo que el problema ese ya lo he solucionado ahora tengo otro , aqui os pongo el codigo de mi servidor, bien pues el cliente se conecta le envia informacion y luego se va, el servidor hace lo correspondiente , se desconecta y al final lo he resaltado con (********) cuando quiere cerrar el socket newsock.Shutdown(SocketShutdown.Both);
me da una excepcion exactamente dice


" No se ha permitido una peticon para enviar o recibir datos ya que el sockets no esta conectado y no se ha proporcionado ninguna direccion, al realizar el envio de un socket de datagramas por medio de una llamada sendto "




string message="";
string msg="";
byte[] data = new byte[1024]; //creamos un byte[] para enviar la bienvenida
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,9050);
//Con el IpAdress.Any esuchamos en cualquier interfaz de red.. y el 9050
//es el puerto en el que escuharemos

//creamos un socket de tipo internwtwork, stream y tcp
Socket newsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
newsock.Bind (ipep); //lo bindeamos para que se ancle al puerto especificaco
}
catch (SocketException)
{
//si aqui hay error es que ese puerto esta en uso y entonces es probable
//que otra instancia de este programa ya este corriendo
Console.WriteLine("Al parecer otra instancia del servidor ya esta corriendo");
return; //si es asi damos un return para salirnos de la funcion y terminar
//el programa
}

newsock.Listen(1); //escuchamos con el socket en el puerto especifaco
Console.WriteLine("Waiting for a client...");
Socket client = newsock.Accept(); //Esto acepta la conexion cuando recibe
//una peticion... esto se queda esperando hasta que ocurra
IPEndPoint newclient = (IPEndPoint)client.RemoteEndPoint; //creamos un IPEndPoint
//con la informacion del cliente
Console.WriteLine("Connected with {0} on port {1}", newclient.Address, newclient.Port);
Console.ReadLine();
//imprimimos en la pantalla que se conecto un cliente
string welcome = "Cliente conectado";
data = Encoding.ASCII.GetBytes(welcome); //Codificamos a byte [] el mensaje
//de bienvenida
int sent = SendData(client, data); //lo enviamos con nuestra funcion, pasandole
//el socket del cliente y el byte[] con el mensaje
for (int m = 0; m < 2; m++)
{//Este for nos sirve para leer infinitamente los mensajes que nos llegan
try
{
data = ReceiveData(client); //Llama a recibir mensajes del socket cliente
//esto se queda esperando hasta recibir un mensaje
message = Encoding.ASCII.GetString(data); //si recibimos un
//mensaje entonces lo decoficamos a un string
if (message!="") msg=message;
if (message == "") //si recibimos exit nos salimos..
break;
Console.WriteLine(message); //si no entonces lo imprimimos
Console .ReadLine();
m=m-1; //restamos al for para que sea infinito...
}
catch (SocketException)
{
Console.WriteLine("No se encontro conexion con el cliente {0}", newclient.Address);
return;
//si enocntramos un error es que se perido la conexion y con el return nos
//salimos de la funcion
}
}
//Damos el mensaje de que se desconecto el cliente XX con puerto XX
Console.WriteLine("Disconnected from {0} on port {1}",newclient.Address,newclient.Port);
//cerramos el socket del cliente
client.Shutdown(SocketShutdown.Both);
client.Close();
//Ceramos el socket con el que escuchamos
try
{
***************************************************************************
newsock.Shutdown(SocketShutdown.Both);
newsock.Close();
}
catch(Exception ex)
{
ex=ex;
}






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.