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()); } } }

Rispondi quotando
