problème de NULL pour envoi d'un objet via une socket
essayant d'envoyer un objet via d'un thread server vers un client par ObjectOutputStream, je reçoit une exception
Citation:
Exception in thread "Thread-4" java.lang.NullPointerException
en déboggant, j'ai remarqué que l'objet de la méthode d'envoi obj est null, comme s'il n'a pas été remplace par celui passé en paramètres car pub n'est pas null, pourtant le même code fonctionnait avant que je mette le serveur dans un thread à part.
Serveur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Socket socket;
ServerSocket srv;
Participant Ui; //un client
List<Participant> participants = new ArrayList<>(); //liste de clients
Publication pub = new Publication(this.data); //objet à envoyer
//thread serveur
Runnable serverTask = () -> {
try {
srv = new ServerSocket(Integer.valueOf(txtPort.getText()));
for (int i = 0; i < nbrParticipants; i++) {
//serveur accepte la connexion d'un participant
socket = srv.accept();
Ui = new Participant(nonce, socket);
//ajouter le participant à connecté à la liste
participants.add(Ui);
//lancement du thread du nouveau participant
Thread thread = new Thread(Ui);
thread.start();
//incrémente le compteur afin d'attribuer un nouveau Id
nonce++;
}
//attendre que tous les candidats se connectent
//pour envoyer les données
for (int i = 0; i < participants.size(); i++) {
participants.get(i).send(pub); //erreur exception ici
}
} catch (IOException e) {
e.printStackTrace();
}
};
Thread serverThread = new Thread(serverTask);
serverThread.start(); |
méthode send()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public class Participant implements Runnable {
public void run() { try {
oos = new ObjectOutputStream(cnx.getOutputStream());
ois = new ObjectInputStream(cnx.getInputStream());
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void send(Object obj) {
try {
oos.writeObject(obj);
oos.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} |