Newsgroup: it.comp.java
Titolo: Server in attesa

La classe seguente è un thread che attiva l'attesa di un server su di una
certa porta.
L'istanza e l'esecuzione di questo thread vanno nel file dell'applicazione.
Provando il programma su due computer in una LAN al momento dell'esecuzione
mi dice che il Socket è chiuso e mi restituisce una NulPointerException sul
computer che invia.
Di conseguenza penso proprio che il problema sia in questo thread, a me
personalmente non mi convince la condizione di permanenza nel While che ho
commentato, voglio mettere una condizione che mi faccia uscire dal ciclo
quando ariva una chiamata al ServerSocket ed il metodo accept mi restituisce
il Socket del Client.
Non sapete se ci sono metodi appositi?
                                                     Grazie
// Copyright (c) 2000 CorsiFse
package chat;
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.event.*;
import javax.net.ssl.*;
import java.security.*;
import javax.security.*;
import com.sun.net.ssl.*;
/**
 * A Class class.
 * <P>
 * @author CorsiFse
 */
public class Ascoltatore extends Thread {
ServerSocket ss;
Socket s;
Container cppr;
  /**
   * Constructor
   */
  public Ascoltatore(Container fl) {
    try{
      cppr=fl;
      Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
      SSLContext context;
      KeyStore keystore;
      char[] password = "bigbanana".toCharArray();
      keystore = KeyStore.getInstance("JKS");
      keystore.load(new FileInputStream("c:\\.keystore"),password);
      KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
      kmf.init(keystore,password);
      context = SSLContext.getInstance("TLS");
      KeyManager[] keyManager = kmf.getKeyManagers();
      context.init(keyManager,null,null);
      SSLServerSocketFactory ssf= context.getServerSocketFactory();
      ss= ssf.createServerSocket(9824);
    }catch(Exception ex){System.out.println(ex);}
  }
//  public void run(){
//  while(true){
//    while(s==null){
//      try{
//        s=ss.accept();
//      }catch(Exception ex){System.out.println(ex);}
//    }
    ChatPan pc=new ChatPan(s,this);
    cppr.add(pc,BorderLayout.CENTER);
    try{
      this.wait();
    }catch(Exception ex){System.out.println(ex);}
  }
  }
}

 Non sapete se ci sono metodi appositi?
[CUT]
forse non ho capito bene.. ma non basta solo invocare il metodo accept ? ..
il metodo accept dei socket è bloccante e non finisce fino a quando o non
arriva una connessione o non chiudi il socket del server.Ho forse
tralasciato qualcosa nel tuo post?
Ciao
Dani
--
Daniele Piras
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If at first the idea is not absurd then there is no hope for it. - Albert
Einstein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Non sapete se ci sono metodi appositi?
[CUT]
Qui dovresti trovare alcuni esempi illuminanti
http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer
.html
HTH
-- 
Ciao
	Fabrizio C.


Questa mattina ho messo dei System.out.println dopo ogni riga nel codice del
client che si connette ed ho visto che non mi istanza il Socket nemmeno se
al posto di tutto il codice SSL metto un semplice Socket s=new
Socket("10.100.0.7",9824);  (computer in rete locale)
La stampa di Socket è null.
Questo mi riporta al Thread, probabilmente il Socket non si istanza perchè
non trova il Server aperto. Possibile?

Scusate non ho messo Re:
Fabrizio Camera <f.came...@Mtiscali.it> wrote in message
MPG.16e7141a3...@powernews.libero.it...


non trova il Server aperto. Possibile?
mmmm .... problema di firewall?  non č che nella tua azienda avete un
firewall oppure nella macchina con IP 10.100.0.7 gira un firewall personale
che blocca le connessioni?
Ma la chiamata non solleva nessuna eccezione ti restituisce solo null e
basta, possibile ?


 basta, possibile ?
Mi restituisce un NullPointerException, ma sai che probabilmente hai
ragione, mi sembra che ci sia installato ZoneAlarm sulla macchina 7.
Grazie!

 HTH
Adesso provo a dargli un'occhiata, grazie!

 Grazie!
forse allora BINGO! .. prova a disabilitarlo poi facci sapere com'č andata
...
ciao ciao


ZoneAlarm è installato ma non è attivo, comunque l'ho disinstallato ma il
problema persiste.
Comunque grazie!