Bonjour a tous
Je suis en train de faire un QCM entre un serveur ui dispose d'uns base de donné mySQL et un client, j'ai crée un réseau pour qu'ils puissent communiquer entre eux avec les sockets.
j'arrive à envoyer des "println" au client mais quand je demande de saisir un nombre je n'y arrive pas.
je vous met le code du serveur et du client pour avoir votre avis
le code serveur est un peu grand a cause de la connection à la BD et de différentes config, je bloque a la ligne 73 je ne sais pas trop quoi mettre.
il me met java.lang.NullPointerException at Main.main(Main.java:73) pour le serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int a= 0; ServerSocket socketserver; Socket socketduserveur ; BufferedReader in = null ; PrintWriter out; BufferedReader inc = null; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver O.K."); String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String passwd = "louis"; Connection conn = DriverManager.getConnection(url, user, passwd); System.out.println("Connecté à la base de données"); Statement state = conn.createStatement(); ResultSet result = state.executeQuery("SELECT * FROM quizz"); ResultSetMetaData resultMeta = (ResultSetMetaData) result.getMetaData(); result.last(); int nombreLignes = result.getRow(); result.beforeFirst(); socketserver = new ServerSocket(2009); System.out.println("Le serveur est à l'écoute du port "+socketserver.getLocalPort()); socketduserveur = socketserver.accept(); System.out.println("client connecté"); in = new BufferedReader(new InputStreamReader(socketduserveur.getInputStream())); out = new PrintWriter(socketduserveur.getOutputStream()); out.println("Vous êtes connecté"); out.flush(); out.println("Il y a "+nombreLignes+ " questions"); Thread.sleep(1000); out.println("\nQuestions:\n\n"); out.flush(); while(result.next()){ Thread.sleep(1000); out.print("\n\n"+result.getInt("id")+")"); out.flush(); out.print(" " + result.getString("question") + "\n"); out.flush(); for(int i = 3; i <= 6; i++) out.print("\t" + (i-2) +"- " + result.getString(i) + "\n"); out.flush(); out.print("\nVeuillez saisir votre réponse:"); //int rep = sc.nextInt(); int rep = inc.read(); if(rep == result.getInt("corrige")){ out.println("Bonne réponse"); out.flush(); //result.updateInt("resultat",1); a++; } else{ out.println("Mauvaise réponse, la bonne réponse était "+ result.getString((result.getInt("corrige")+2))); out.flush(); //result.updateInt("resultat",0); } Thread.sleep(1000); out.println("Votre score est de "+ a +"/"+result.getInt("id")+"."); } out.flush(); socketduserveur.close(); socketserver.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("\nerreur 1"); } } }
le client
la boucle for, le while et les lignes System.out.println(in.readLine()); servent à ce que le client affiche a chaque ce que le serveur envoie, je ne sais pas si c'est comme qu'il faut faire ( ça fait un peu bourrin).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.sql.Connection; import java.sql.DriverManager; import java.util.Scanner; public class Client { public static void main(String[] zero) { Socket socket; BufferedReader in; Scanner sc = new Scanner(System.in); int b=0; int rep; PrintWriter out =null; try { socket = new Socket("192.168.137.1",2009); System.out.println("Demande de connexion"); in = new BufferedReader (new InputStreamReader (socket.getInputStream())); out = new PrintWriter(socket.getOutputStream()); sc = new Scanner(System.in); System.out.println(in.readLine()); System.out.println(in.readLine()); System.out.println(in.readLine()); System.out.println(in.readLine()); for(int i=0;i<5;i++){ while(b<9){ System.out.println(in.readLine()); b++; } rep = sc.nextInt(); i++; } out.flush(); socket.close(); }catch (UnknownHostException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } } }
Partager