Newsgroup: it.comp.java
Titolo: NONE

.Salve a tutti, 
innanzitutto scusatemi perchè non posto spesso sui newsgroup e se lo faccio
è perchè ho bisogno di una mano (sono sincero)..Dopo questa umile premessa,
illustro subito il mio problema:
->PROBLEMA:
Sto cercando di fare un programma che sia in grado di far comunicare 2 persone
attraverso un'interfaccia testuale (una specie di mini IRC,tanto per capirci)
Fin qui ci siete? Ohh,bene..Ho cercato di risolvere il tutto con questa 
soluzione, due classi estenzioni di thread(una per la spedizione e una per la 
ricezione) e una classe principale..Adesso il problema sorge se mentre uno
dei due interlocutori sta scrivendo la stringa che vuole "spedire" ma non la ha
ancora completata e l'altro ne invia una, la mia soluzione è quella di cancellare
ciò che il primo sta scrivendo mediante una serie di'\b',scrivere la stringa 
ricevuta e poi riscrivere quella incompleta..Tutto fila ma il codice non funonzia..
Ripeto:non funonzia..Quello che vorrei realizzare è tutto in modalità testo,
niente interfaccie grafiche o frame, anche se gradisco suggerimenti anche su questi..
Allego il codice:
//  FILE chat.java
//
//  (c) by TANO..
import java.io.*;
import java.net.*;
class send extends Thread{
  private Socket socket;
  private PrintStream out;
  private StringBuffer share;
  send(Socket socket,StringBuffer share)
  {
    this.socket=socket;
    this.share=share;
    try
    {
      out=new PrintStream(socket.getOutputStream());
    }
    catch(IOException e)
    {
      System.out.println("-> A.IOEx in class send..");
    }
    this.start();
  }
  public void run()
  {
    char key=' ';
    String line;
    do
    {
      share.setLength(0);
      do
      {
        try
        {
          key=(char)System.in.read();
        }
        catch(IOException e)
        {
          System.out.println("->B.IOEx in class send");
        }
        share.append(key);
      }
      while(key!='\n');
      line=share.toString();
      out.print(line);
    }
    while(line!=null);
  }
}
class receive extends Thread{
  private Socket socket;
  private DataInputStream in;
  private StringBuffer share;
  receive(Socket socket,StringBuffer share)
  {
    this.socket=socket;
    this.share=share;
    try
    {
      in=new DataInputStream(socket.getInputStream());
    }
    catch(IOException e)
    {
      System.out.println("-> C.IOEx in class receive..");
    }
    this.start();
  }
  public void run()
  {
    String line=null;
    int i;
    do
    {
      try
      {
        line=in.readLine();
      }
      catch(IOException e)
      {
        try
        {
          socket.close();
        }
        catch(IOException ee)
        {
          System.out.println("IETTILU!!");
        }
        System.exit(0);
      }
      for(i=0;i<share.length();i++)
        System.out.print("b");
      System.out.print(line);
      System.out.println(share);
    }
    while(line!=null);
  }
}
class chat{
  final static int PORT=23;
  public static void main(String arghh[])
  {
    Socket socket=null;
    ServerSocket serversocket;
    StringBuffer share=new StringBuffer();
    System.out.println("\n  CHAT.. - (c) by TANO");
    try
    {
      socket=new Socket("localhost",PORT);
      System.out.println("->CLIENT");
    }
    catch(IOException e)
    {
      try
      {
        serversocket=new ServerSocket(PORT,1);
        System.out.println("->SERVER");
        socket=serversocket.accept();
      }
      catch(IOException ee)
      {
        System.out.println(" IETTILU!!");
      }
    }
    new send(socket,share);
    new receive(socket,share);
  }
}
Ah,mentre che ci siete(mentre che non si dice!!), potreste dirmi come
posso identificare un banale computer all'interno di internet?(per il
mio codice ho appositamente scritto "localhost"..)
Grazie a tutti!!
                tano

 ricevuta e poi riscrivere quella incompleta..Tutto fila ma
il codice non funonzia..
Ah adesso ho capito il significato della StringBuffer share..
§Credo che il problema sia nel fatto che tu leggi nella Send un carattere
alla volta da console.. pero' il fatto è che se non ricordo male, per
leggere un carattere l'interprete java si aspetta che tu prema invio dopo il
carattere,, quindi per scrivere casa e leggere un carattere alla volta
dovresti scrivere
c
a
s
a
non so se mi sono spiegato..
Ciao
