• Miércoles 20 de Noviembre de 2024, 16:20

Autor Tema:  Aplicacion Cliente Servidor  (Leído 8180 veces)

lauri

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Aplicacion Cliente Servidor
« en: Jueves 6 de Julio de 2006, 12:24 »
0
haber pues esta es mi duda haber si alguien me la puede resolver, creo que es muy sencillita, pues bien este es el codigo del cliente


TcpClient client = new TcpClient("127.0.0.1", 65000);
         Byte[] data = System.Text.Encoding.ASCII.GetBytes(txbconectar.Text);
         NetworkStream stream = client.GetStream();
         stream.Write(data, 0, data.Length);

y este el codigo del servidor

IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
         String data = null ;
         TcpListener tcpListener = new TcpListener(ipAddress, 65000);
         tcpListener.Start( );
         for (;;)
         {
            Socket socketForClient = tcpListener.AcceptSocket( );
            if (socketForClient.Connected)
            {
               MessageBox.Show("Client connected");
               byte [] bytes = new byte [1024];
               int bytesRec = socketForClient.Receive(bytes);
               data = Encoding.ASCII.GetString(bytes,0,bytesRec);
               if (data.IndexOf("<EOF>") > -1)
                  break ;
               MessageBox.Show(data);
            }


bien pues con la ip 127.0.0.1 me funciona todo perfectamente

bien ahora yo hago que el servidor sea un equipo que tenga al lado y cuando el cliente que esta en otro equipo se quiere conectar le pongo la ip del que esta haciendo como servidor

bien pues me dice que
"Información adicional: Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder"

haber si me podeis decir que tengo que hacer  si es por el codigo o por otras razones  gracias de antemano un saludo a todos

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Aplicacion Cliente Servidor
« Respuesta #1 en: Jueves 6 de Julio de 2006, 14:41 »
0
ya le diste permisos en el firewall de windows xp?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

lauri

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Aplicacion Cliente Servidor
« Respuesta #2 en: Jueves 6 de Julio de 2006, 15:55 »
0
con lo de los permisos quieres decir que en el panel de control desactive el firewall de windows??

eso si que lo he echo de los permisos ni idea

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Aplicacion Cliente Servidor
« Respuesta #3 en: Jueves 6 de Julio de 2006, 17:26 »
0
si ya no tienes activo el firewall no deberia haber problema.

En que linea te arroja el error cuando haces debug?

podrias adjuntar el proyecto al post?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Aplicacion Cliente Servidor
« Respuesta #4 en: Jueves 6 de Julio de 2006, 17:39 »
0
Si tienes más de una interfaz de red (puedes ver esto usando el comando ipconfig desde Inicio ->ejecutar-> cmd -> ipconfig ) puede ser que el primero no tenga conectividad con la máquina cliente:

IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];

Si sólo te aparece una IP entonces es otro problema.

lauri

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Aplicacion Cliente Servidor
« Respuesta #5 en: Jueves 6 de Julio de 2006, 18:23 »
0
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;
         }