Buona sera forum!! ho scritto questi due programmini e andavano bene fino a quando non ho inserito un ciclo while nel server per renderlo sempre attivo, adesso il programma lancia eccezioni.
Ecco il codice del Server e del Client:
package hello;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Logger;
public class Server
{
static Logger logger = Logger.getLogger("global");
public static void main(String arg[])
{
while(true)
{
try
{
ServerSocket serverSocket = new ServerSocket(9000);
logger.info("Socket instanziato, attendo connessioni....");
Socket socket = serverSocket.accept();
logger.info("Accettata una connessione... attendo comandi");
ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
String name = (String) inStream.readObject();
logger.info("Ricevuto " + name);
outStream.writeObject("Hello " + name);
socket.close();
}
catch(Throwable e)
{
e.printStackTrace();
}
}
}
}
package hello;
import java.io.EOFException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.logging.Logger;
public class Client
{
static Logger logger= Logger.getLogger("global");
public static void main(String args[])
{
try
{
Socket socket = new Socket("localhost",9000);
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
out.writeObject("Marco");
System.out.println(in.readObject());
socket.close();
}
catch(EOFException e)
{
logger.severe("problemi con la connessione" + e.getMessage());
e.printStackTrace();
}
catch(Throwable e)
{
logger.severe("lanciata throwable" + e.getMessage());
e.printStackTrace();
}
}
}
ecco l'eccezione lanciata
java.net.BindException: Indirizzo già in uso
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at hello.Server.main(Server.java:19)
Come risolvo il problema? Grazie