elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Cliente/Servidor basico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cliente/Servidor basico  (Leído 2,561 veces)
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Cliente/Servidor basico
« en: 2 Junio 2014, 23:54 pm »

Hola gente como va? A ver si me pueden dar una mano con esto porque no doy pie con bola, google no me sirvio de mucho tampoco :S .

Estoy armando un cliente/servidor para posterior uso de manejo remoto, pero ni siquiera lo puedo hacer simplemente en mi pc local. Me baje y compile estos ejemplos:

Codigo del server:
Código:
package serverclienttest;

import java.net.*;
import java.io.*;

public class Server
{
    final int PUERTO=5000;
    ServerSocket sc;
    Socket so;
    DataOutputStream salida;
    String mensajeRecibido;

    //SERVIDOR
    public void initServer()
    {
        BufferedReader entrada;

        try
        {
            sc = new ServerSocket(PUERTO );/* crea socket servidor que escuchara en puerto 5000*/
            so=new Socket();
       
            System.out.println("Esperando una conexión:");
            so = sc.accept();

            //Inicia el socket, ahora esta esperando una conexión por parte del cliente
            System.out.println("Un cliente se ha conectado.");

            //Canales de entrada y salida de datos
            entrada = new BufferedReader(new InputStreamReader(so.getInputStream()));
            salida = new DataOutputStream(so.getOutputStream());

            System.out.println("Confirmando conexion al cliente....");
            salida.writeUTF("Conexión exitosa...n envia un mensaje :D");

            //Recepcion de mensaje
            mensajeRecibido = entrada.readLine();
            System.out.println(mensajeRecibido);

            salida.writeUTF("Se recibio tu mensaje.n Terminando conexion...");
            salida.writeUTF("Gracias por conectarte, adios!");

            System.out.println("Cerrando conexión...");
            sc.close();//Aqui se cierra la conexión con el cliente

        } //try
        catch(Exception e )
        {       
            e.printStackTrace();
            System.out.println("Error: "+e.getMessage());
        } //catch
    } //initServer
} //class

Codigo del cliente:
Código:

package serverclienttest;

import java.net.*;
import java.io.*;

public class Client
{

    final String HOST = "localhost";
    final int PUERTO=5000;
    Socket sc;
    DataOutputStream mensaje;
    DataInputStream entrada;

    //Cliente
    public void initClient() /*ejecuta este metodo para correr el cliente */
    {

        try
        {
            sc = new Socket( HOST , PUERTO ); /*conectar a un servidor en localhost con puerto 5000*/
            //creamos el flujo de datos por el que se enviara un mensaje
            mensaje = new DataOutputStream(sc.getOutputStream());

            //enviamos el mensaje
            mensaje.writeUTF("hola que tal!!");

            //cerramos la conexión
            sc.close();
        }
        catch(Exception e )
        {
            System.out.println("Error: "+e.getMessage());
            e.printStackTrace();
        }
    }//initClient
}//class

Al ejecutar el servidor (por medio de initServer) se queda en "Esperando una conexion.." , OK. Al ejecutar el cliente en otra instancia (por medio de initClient) da el siguiente error:

Código:
run:
Esperando una conexión:
Un cliente se ha conectado.
Confirmando conexion al cliente....
java.net.SocketException: Software caused connection abort: recv failed
Error: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at serverclienttest.Server.initServer(Server.java:39)
at serverclienttest.ServerClientTest.main(ServerClientTest.java:21)
BUILD SUCCESSFUL (total time: 7 seconds)

Y no se que varia que en otras oportunidades da esto:
Código:
run:
run:
Esperando una conexión:
Un cliente se ha conectado.
Confirmando conexion al cliente....
      hola que tal!!
java.net.SocketException: Software caused connection abort: socket write error
Error: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:401)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:323)
at serverclienttest.Server.initServer(Server.java:42)
at serverclienttest.ServerClientTest.main(ServerClientTest.java:21)
BUILD SUCCESSFUL (total time: 6 seconds)

Por si las dudas uso Netbeans y desactive el firewall de windows para la prueba.

Gracias de antemano.

Saludos!


En línea

Nasty35

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: Cliente/Servidor basico
« Respuesta #1 en: 3 Junio 2014, 23:18 pm »

Para empezar, en el servidor envías:
salida.writeUTF("Conexión exitosa...n envia un mensaje :D");
Y debes hacer luego un:
salida.flush();

En el cliente no veo donde leas esa línea, directamente envías otra:
mensaje.writeUTF("hola que tal!!");

También debes añadir el .flush();

Y luego envías otras dos cadenas, y en el servidor no se leen.

Espero que me entiendas.


En línea

Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Re: Cliente/Servidor basico
« Respuesta #2 en: 10 Junio 2014, 00:59 am »

Eso me pasa por copiarme ejemplo de blogueros de internet :facepalm to me:

Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
manual muy básico para montar un servidor ftp. « 1 2 ... 9 10 »
Tutoriales - Documentación
Badcode 94 149,283 Último mensaje 14 Agosto 2007, 14:13 pm
por remote k!ng
CLIENTE-SERVIDOR EN VB.NET ¿?
Programación Visual Basic
Lord Vader 3 2,488 Último mensaje 1 Septiembre 2005, 19:42 pm
por Lord Vader
Que procedimientos a utilizar para crear servidor y cliente en vb basico
Programación Visual Basic
ranslsad 4 2,021 Último mensaje 17 Enero 2006, 21:19 pm
por -Xenon-
cliente/servidor en vb.net¿?¿?¿?
.NET (C#, VB.NET, ASP)
WarGhost 5 6,514 Último mensaje 17 Junio 2006, 19:22 pm
por BADBYTE-K
servidor web básico en vb .net?
.NET (C#, VB.NET, ASP)
_CrisiS_ 8 9,016 Último mensaje 24 Diciembre 2010, 06:20 am
por _CrisiS_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines