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!