Newsgroup: it.comp.java
Titolo: errore stranissimo con socket!!

Salve a tutto il NG.
Sto utilizzando Java (Eclipse) per creare una connessione server -
client utilizzando i socket.
Vi assicuro che prima di scrivere in questo NG ho provato di tutto per
risolvere il problema che vado ora ad esporvi.Non so più dove sbattere
la testa!!!
Il mio problema è che viene lanciata una eccezione a me
incomprensibile e solo in certe condizioni.Il mio codice crea
semplicemente 2 flussi DataOutputStream nel client e nel Server....è
di una semplicità estrema , per questo non capisco come possa esserci
un errore!
1)Il problema è che l'errore NON VIENE LANCIATO SEMPRE!Se tolgo la
riga incriminata dalla classe client (tale riga è indicata nel codice
sottostante) TUTTO FUNZIONA BENE! Se invece metto la riga mi viene
lanciata l'eccezione che riporto nel seguito. Ma perchè?!?Perchè
un'operazione di lettura mi modifica il tutto?!?Non c'entra niente con
il flusso dos...
2)Un'altra cosa strana è che se invece della riga incriminata metto
un'istruzione del tipo System.out.println("ciao") tutto funziona
bene....non viene lanciata l'eccezione...
il codice è il seguente:
LA CLASSE CLIENT E':
public class client {
     Socket s;
     DataInputStream dis;
     DataOutputStream dos;
     BufferedReader stdIn;
public client() throws Exception
{
	s = new Socket("localhost",7777);
	dos = new DataOutputStream(s.getOutputStream());
	dis = new DataInputStream(s.getInputStream());
}
public static void main(String[] args) throws Exception
{
    client Client=new client();
    Client.scambio();
}
public void scambio () throws Exception
{
               String messaggio;
               stdIn = new BufferedReader(new
InputStreamReader(System.in));
               messaggio=stdIn.readLine().toString(); //RIGA
INCRIMINATA: QUESTA RIGA CAMBIA TUTTO!!
               dos.writeUTF("Sono ilclient!");
}
LA CLASSE SERVER E':
public class server{
   Socket s;
   DataInputStream dis;
   DataOutputStream dos;
 public server() throws Exception
 {
      ServerSocket ss = new ServerSocket(7777);
      System.out.println("Listening on port " + 7777 + "...");
      s = ss.accept();
      dos = new DataOutputStream(s.getOutputStream());
      dis = new DataInputStream(s.getInputStream());
}
public static void main(String[] args) throws Exception
{
    server Server=new client();
    Server.scambio();
}
public void scambio()throws Exception
 {
      dos.writeUTF("Eccomi!");
}
}
L'Eccezione è:
Exception in thread "main" java.net.SocketException: Connection reset
by peer: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(Unknown Source)
	at java.net.SocketOutputStream.write(Unknown Source)
	at java.io.DataOutputStream.write(Unknown Source)
	at java.io.DataOutputStream.writeUTF(Unknown Source)
	at java.io.DataOutputStream.writeUTF(Unknown Source)
Spero che qualcuno mi dia una mano...vi ringrazio in anticipo!!!
Ciao a tutti,
Massimiliano

Riporta lo StackTrace dell'Exception per intero.
Penso che l'eccezione te la possa dare occasionalmente anche *senza* la Riga
Incriminata.
Cosa desideri ottenere esattamente?

     server Server=new client();
mi sa che ci starebbe meglio un new server(), no?
Prova a rimettere a posto almeno queste cose basilari, eventualmente 
prova anche a leggere dall'altra parte i dati che scrivi sulla socket.
Nota: se usassi le convenzioni java (Classi e Costruttori con la 
maiuscola, istanze con la minuscola) il tuo codice sarebbe molto più 
leggibile.
Ciao
-- 
stajune