Newsgroup: it.comp.java
Titolo: Problema con Socket(posto il codice)

lato server:
         ServerSocket ServSock=new ServerSocket(Port);
        Socket ServSocket=ServSock.accept();
         OutputStream Out=ServSocket.getOutputStream();
         InputStream  In=ServSocket.getInputStream();
         BufferedWriter Bw=new BufferedWriter(new OutputStreamWriter(Out));
         BufferedReader Br=new BufferedReader(new InputStreamReader(In));
         String TextIn=Br.readLine();
lato client:
         Socket ClientSocket=new Socket(hostname,Port);
         OutputStream Out=ClientSocket.getOutputStream();
         InputStream  In =ClientSocket.getInputStream();
         BufferedWriter Bw=new BufferedWriter(new OutputStreamWriter(Out));
         BufferedReader Br=new BufferedReader(new InputStreamReader(In));
         String QueryConn=new String("GNUTELLA CONNECT\n\n");
         Bw.write(QueryConn,0,QueryConn.length());
Devo spedire il messaggio GNUTELLA CONNECT\n\n dal client al server, non
capisco perche' non arriva il messaggio al Server.
Ho notato che non stampa la stringa inviata e si ferma sulla readLine() che
prob č bloccante, mi sapete dire che cosa ho sbagliato?
Grazie.


Good luck,
Mauri.
P.s.: non è che sia *obbligatorio*, ma sarebbe meglio usare
identificatori di campi (variabili...) che iniziano con la minuscola.
-- 
La forza di gravità è un falso mito,
è la Terra che succhia!

>          String TextIn=Br.readLine();
Il metodo readLine() della classe BufferedReader non mi pare affatto
deprecato... Ti sbagli forse con il metodo readLine() della classe
DataInputStream ?
Ciao,
Mauri.


 pw.println(queryConn);
Non funziona neanche cosi', sembra che al Server non arrivi niente non
capisco:(
Ale.

ti pasto del codice che ho scritto qualche settimana fa.
 while(true) {
  try {
     /********************************************/
     /***  Accetto la connessione sul Socket *****/
     /********************************************/
     Socket s1 = s.accept();
     System.out.println("IP connected: " + s1.getInetAddress());
     OutputStream s1out = s1.getOutputStream();
     DataOutputStream dos = new DataOutputStream(s1out);
     String MessageToUser;
     /* Rispondo all'utente che si è connesso */
     MessageToUser = "Hello " + s1.getInetAddress();
     MessageToUser += "\nControllo se hai le permission...";
     dos.writeUTF(MessageToUser);
     MyIp=s1.getInetAddress().toString();
     PrintMe Program = new PrintMe(MyIp);
     /* Istanzio un Thread assegnando Nome e Priorità */
        Thread myThread = new Thread(Program);
        myThread.setName("CeckingPermission");
        myThread.start();
    } catch (IOException e) {
     //Ignore
      }
  }
--
CIAO!
Gusher

          Bw.write(QueryConn,0,QueryConn.length());
Se aggiungo al lato client Bw.flush funziona,anche se non ho capito bene
perche'.
La readLine() è bloccante fino a che non riceve un \n o un \r o un \r\n.
Ale.

 ha scritto nel messaggio
news:kkl48.7252$6e5.2...@twister2.libero.it...


 ha scritto nel messaggio
news:AQw48.9521$761.3...@twister1.libero.it...


Il motivo è semlice, nel tuo primo codice quando operavi la scrittura con la
write scrivevi semplicemente sul buffer interno, e siccome il testo era poco
la JVM aspettava che tu scrivessi altra roba per operare effettivamente una
comunicazione TCP/IP. Il problema è che se non raggiungi mai la dimensione
del buffer o non operi manualmente il flush dello stesso semplicemente non
parte alcun messaggio TCP!! Quindi il tuo server era perfetto, e come dicevi
tu si bloccava sulla read, peccato che non gli arrivasse alcun messaggio!
;-)
Ciao e buon lavoro!
fede