CLR: .Net / Mono / Boo / Otros CLR > C#

 Aplicacion Cliente Servidor

<< < (2/2)

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;
         }

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa