La seguente comunicazione client/server funziona per una porta diversa dalla 2012, mentre su quella porta quando
lancio il server mi appare il seguente output:
Server in attesa sulla porta 2012
Connessione avvenuta
ECCEZZIONE Server: java.io.StreamCorruptedException: invalid stream header: 0201F900
********** Client.java **********
codice:
import java.net.*;
import java.io.*;
public class Client
{
public static void main(String[] args)
{
Socket client;
OutputStream out;
ObjectOutputStream oos;
String messaggioDaInviareAlServer;
messaggioDaInviareAlServer="Ciao ciao";
String serverName="127.0.0.1";
int port=2012; // 2012 // <----- PORTA
try
{
System.out.println("Connessione a " + serverName + " sulla porta " + port);
client = new Socket(serverName, port);
System.out.println("Collegato a " + client.getRemoteSocketAddress());
out=client.getOutputStream();
oos=new ObjectOutputStream(out);
oos.writeUTF(messaggioDaInviareAlServer);
oos.flush();
client.close();
}
catch (Exception exc)
{
System.out.println("ECCEZIONE Client: "+exc.toString());
}
}
}
********** Server.java **********
codice:
import java.net.*;
import java.io.*;
public class Server extends Thread {
private ServerSocket serverSocket;
InputStream in;
ObjectInputStream ois;
String messaggio;
public Server(int port) throws IOException
{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(100000); // Moltiplicato per 10 // se 0 loop infinito
}
public void run()
{
while (true)
{
try
{
System.out.println("\nServer in attesa sulla porta "+serverSocket.getLocalPort());
Socket server = serverSocket.accept();
//System.out.println("Connessione avvenuta: " + server.getRemoteSocketAddress());
System.out.println("Connessione avvenuta");
in=server.getInputStream();
ois=new ObjectInputStream(in);
messaggio=ois.readUTF();
System.out.println("Il client ha inviato: "+messaggio);
// if readUTF() è uguale a "FINE" allora server.close();
//server.close();
}
catch(SocketTimeoutException s)
{
//System.out.println("Socket timed out!");
System.out.println("Tempo scaduto - connessione interrotta");
break;
}
catch(Exception exc)
{
System.out.println("ECCEZZIONE Server: "+exc.toString());
break;
}
}
}
public static void main(String [] args)
{
int port=2012; // 2012 <----- PORTA
try {
Thread t = new Server(port);
t.start();
}
catch(Exception exc)
{
System.out.println("ECCEZZIONE Server: "+exc.toString());
}
}
}