0% found this document useful (0 votes)
27 views21 pages

Code Complet (Java - Python - Scala)

Cours

Uploaded by

leye.maguette1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views21 pages

Code Complet (Java - Python - Scala)

Cours

Uploaded by

leye.maguette1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Code Serveur Java

mardi 3 décembre 2024 21:01

package Quiz_Package;

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];

public class ClientQuiz extends [Link] {

private static final String SERVER_ADDRESS = "localhost"; // Adresse du serveur


private static final int SERVER_PORT = 12345; // Port du serveur
private Socket socket;
private PrintWriter out;
private BufferedReader in;

private List<String> questions = null; // Liste des questions


private int currentQuestionIndex = 0; // Index de la question actuelle
private boolean connected = false; // Indique si le client est connecté

/**
* Creates new form ClientQuiz
*/
public ClientQuiz() {
initComponents();
// Initialisation des questions
questions = [Link](
"Q1. Une @ IPV6 tient sur :\n A. 32 bits\n B. 128 bits",
"Q2. Un numéro de port sert à : A. Identifier une machine B. Identifier une application",
"Q3. L'API Socket est au niveau : A. Transport B. Application",
"Q4. TCP fonctionne en mode : \n A. Connecté\n B. Non connecté",
"Q5. UDP est :\n A. Fiable\n B. Non Fiable ",
"Q6. [Link] est une @ IPV4 :\n A. Privée\n B. Public ",
"Q7. [Link] est une @ IPV4 :\n A. Classe D\n B. Classe C ",
"Q8. ServerSocket est la classe Java qui implémente :\n A. Les Sockets d’écoute\n B. Les Sockets de transfert",
"Q9. La classe Date est définie dans :\n A. [Link]\n B. [Link] ",
"Q10. La classe InetAddress correspond à :\n A. Adresse IP\n B. Adresse URL"
);

// Afficher la première question


afficherQuestion();
}
private void afficherQuestion() {
if (currentQuestionIndex < [Link]()) {
// Afficher la question actuelle dans jTextArea1
[Link]([Link](currentQuestionIndex));
} else {
[Link]("Fin des questions. Cliquez sur 'Quitter'.");
}
}
private void connectToServer() {
try {
socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
out = new PrintWriter([Link](), true);
in = new BufferedReader(new InputStreamReader([Link]()));

// Afficher les questions dans jTextArea1


String question;
while ((question = [Link]()) != null) {
[Link](question + "\n");
}

Code Complet(Java _ Python _ Scala) Page 1


}
} catch (IOException e) {
[Link]();
}
}
private void sendAnswer() {
if (!connected) {
[Link]("Veuillez d'abord vous connecter au serveur.");
return;
}
while (currentQuestionIndex < [Link]()) {
// Vérifier si une réponse a été saisie
String reponse = [Link]().trim();
if ([Link]()) {
[Link]("Veuillez saisir une réponse avant de continuer.");
return;
}

// Envoyer la réponse au serveur


[Link](reponse);
// Passer à la question suivante
currentQuestionIndex++;
afficherQuestion();

// Lire le score final si c'était la dernière question


if (currentQuestionIndex == [Link]()) {
try {
String score = [Link](); // Lire le score envoyé par le serveur
[Link](score); // Afficher le score dans le champ texte
[Link](); // Fermer la connexion au serveur
} catch (IOException e) {
[Link]();
}
}
}
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new [Link]();


jLabel2 = new [Link]();
jScrollPane1 = new [Link]();
jTextArea1 = new [Link]();
jLabel3 = new [Link]();
jTextField1 = new [Link]();
jLabel4 = new [Link]();
jTextField2 = new [Link]();
jButton1 = new [Link]();
jButton2 = new [Link]();
jButton3 = new [Link]();

setDefaultCloseOperation([Link].EXIT_ON_CLOSE);

[Link](new [Link]("Algerian", 3, 36)); // NOI18N


[Link](new [Link](0, 102, 0));
[Link]("Client QUIZ");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Question ?");

Code Complet(Java _ Python _ Scala) Page 2


[Link](20);
[Link](5);
[Link](jTextArea1);

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Ma Réponse");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link](new [Link](51, 102, 0));

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Mon Score");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link](new [Link](51, 102, 0));

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Connecter");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton1ActionPerformed(evt);
}
});

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Question Suivant");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton2ActionPerformed(evt);
}
});

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Quitter");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton3ActionPerformed(evt);
}
});

[Link] layout = new [Link](getContentPane());


getContentPane().setLayout(layout);
[Link](
[Link]([Link])
.addGroup([Link]()
.addGroup([Link]([Link])
.addGroup([Link]()
.addGap(83, 83, 83)
.addComponent(jLabel1))
.addGroup([Link]()
.addGap(16, 16, 16)
.addGroup([Link]([Link], false)
.addComponent(jLabel2)
.addGroup([Link]()
.addComponent(jButton1)
.addGap(36, 36, 36)
.addComponent(jButton2)
.addPreferredGap([Link], [Link].DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jButton3))
.addGroup([Link]()
.addComponent(jLabel3)
.addPreferredGap([Link])
.addComponent(jTextField1, [Link].PREFERRED_SIZE, 73, [Link].PREFERRED_SIZE)
.addGap(62, 62, 62)
.addComponent(jLabel4)
.addGap(18, 18, 18)
.addComponent(jTextField2, [Link].DEFAULT_SIZE, 73, Short.MAX_VALUE)))))

Code Complet(Java _ Python _ Scala) Page 3


.addComponent(jTextField2, [Link].DEFAULT_SIZE, 73, Short.MAX_VALUE)))))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup([Link]()
.addContainerGap()
.addComponent(jScrollPane1, [Link].PREFERRED_SIZE, 360, [Link].PREFERRED_SIZE)
.addContainerGap(10, Short.MAX_VALUE))
);
[Link](
[Link]([Link])
.addGroup([Link]()
.addGap(16, 16, 16)
.addComponent(jLabel1)
.addPreferredGap([Link])
.addComponent(jLabel2)
.addPreferredGap([Link])
.addComponent(jScrollPane1, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup([Link]([Link])
.addComponent(jLabel3)
.addComponent(jTextField1, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(jTextField2, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup([Link]([Link])
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3))
.addContainerGap(29, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed([Link] evt) {


// TODO add your handling code here:
connectToServer(); // Se connecter au serveur

private void jButton2ActionPerformed([Link] evt) {


// TODO add your handling code here:
sendAnswer(); // Envoyer la réponse et passer à la question suivante

private void jButton3ActionPerformed([Link] evt) {


// TODO add your handling code here:
[Link](0); // Quitter l'application

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see [Link]
*/
try {
for ([Link] info : [Link]()) {
if ("Nimbus".equals([Link]())) {
[Link]([Link]());
break;
}

Code Complet(Java _ Python _ Scala) Page 4


}
}
} catch (ClassNotFoundException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch (InstantiationException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch (IllegalAccessException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch ([Link] ex) {
[Link]([Link]()).log([Link], null, ex);
}
//</editor-fold>

/* Create and display the form */


[Link](new Runnable() {
public void run() {
new ClientQuiz().setVisible(true);
}
});
}

// Variables declaration - do not modify


private [Link] jButton1;
private [Link] jButton2;
private [Link] jButton3;
private [Link] jLabel1;
private [Link] jLabel2;
private [Link] jLabel3;
private [Link] jLabel4;
private [Link] jScrollPane1;
private [Link] jTextArea1;
private [Link] jTextField1;
private [Link] jTextField2;
// End of variables declaration
}

Code Complet(Java _ Python _ Scala) Page 5


Code Client Java
mardi 3 décembre 2024 21:04

package Quiz_Package;

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];

public class ClientQuiz extends [Link] {

private static final String SERVER_ADDRESS = "localhost"; // Adresse du serveur


private static final int SERVER_PORT = 12345; // Port du serveur
private Socket socket;
private PrintWriter out;
private BufferedReader in;

private List<String> questions = null; // Liste des questions


private int currentQuestionIndex = 0; // Index de la question actuelle
private boolean connected = false; // Indique si le client est connecté

/**
* Creates new form ClientQuiz
*/
public ClientQuiz() {
initComponents();
// Initialisation des questions
questions = [Link](
"Q1. Une @ IPV6 tient sur :\n A. 32 bits\n B. 128 bits",
"Q2. Un numéro de port sert à : A. Identifier une machine B. Identifier une application",
"Q3. L'API Socket est au niveau : A. Transport B. Application",
"Q4. TCP fonctionne en mode : \n A. Connecté\n B. Non connecté",
"Q5. UDP est :\n A. Fiable\n B. Non Fiable ",
"Q6. [Link] est une @ IPV4 :\n A. Privée\n B. Public ",
"Q7. [Link] est une @ IPV4 :\n A. Classe D\n B. Classe C ",
"Q8. ServerSocket est la classe Java qui implémente :\n A. Les Sockets d’écoute\n B. Les Sockets de transfert",
"Q9. La classe Date est définie dans :\n A. [Link]\n B. [Link] ",
"Q10. La classe InetAddress correspond à :\n A. Adresse IP\n B. Adresse URL"
);

// Afficher la première question


afficherQuestion();
}
private void afficherQuestion() {
if (currentQuestionIndex < [Link]()) {
// Afficher la question actuelle dans jTextArea1
[Link]([Link](currentQuestionIndex));
} else {
[Link]("Fin des questions. Cliquez sur 'Quitter'.");
}
}
private void connectToServer() {
try {
socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
out = new PrintWriter([Link](), true);
in = new BufferedReader(new InputStreamReader([Link]()));

// Afficher les questions dans jTextArea1


String question;

Code Complet(Java _ Python _ Scala) Page 6


String question;
while ((question = [Link]()) != null) {
[Link](question + "\n");
}
} catch (IOException e) {
[Link]();
}
}
private void sendAnswer() {
if (!connected) {
[Link]("Veuillez d'abord vous connecter au serveur.");
return;
}
while (currentQuestionIndex < [Link]()) {
// Vérifier si une réponse a été saisie
String reponse = [Link]().trim();
if ([Link]()) {
[Link]("Veuillez saisir une réponse avant de continuer.");
return;
}

// Envoyer la réponse au serveur


[Link](reponse);
// Passer à la question suivante
currentQuestionIndex++;
afficherQuestion();

// Lire le score final si c'était la dernière question


if (currentQuestionIndex == [Link]()) {
try {
String score = [Link](); // Lire le score envoyé par le serveur
[Link](score); // Afficher le score dans le champ texte
[Link](); // Fermer la connexion au serveur
} catch (IOException e) {
[Link]();
}
}
}
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new [Link]();


jLabel2 = new [Link]();
jScrollPane1 = new [Link]();
jTextArea1 = new [Link]();
jLabel3 = new [Link]();
jTextField1 = new [Link]();
jLabel4 = new [Link]();
jTextField2 = new [Link]();
jButton1 = new [Link]();
jButton2 = new [Link]();
jButton3 = new [Link]();

setDefaultCloseOperation([Link].EXIT_ON_CLOSE);

Code Complet(Java _ Python _ Scala) Page 7


[Link](new [Link]("Algerian", 3, 36)); // NOI18N
[Link](new [Link](0, 102, 0));
[Link]("Client QUIZ");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Question ?");

[Link](20);
[Link](5);
[Link](jTextArea1);

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Ma Réponse");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link](new [Link](51, 102, 0));

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Mon Score");

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link](new [Link](51, 102, 0));

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Connecter");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton1ActionPerformed(evt);
}
});

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Question Suivant");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton2ActionPerformed(evt);
}
});

[Link](new [Link]("Segoe UI", 1, 12)); // NOI18N


[Link]("Quitter");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton3ActionPerformed(evt);
}
});

[Link] layout = new [Link](getContentPane());


getContentPane().setLayout(layout);
[Link](
[Link]([Link])
.addGroup([Link]()
.addGroup([Link]([Link])
.addGroup([Link]()
.addGap(83, 83, 83)
.addComponent(jLabel1))
.addGroup([Link]()
.addGap(16, 16, 16)
.addGroup([Link]([Link], false)
.addComponent(jLabel2)
.addGroup([Link]()
.addComponent(jButton1)
.addGap(36, 36, 36)
.addComponent(jButton2)

Code Complet(Java _ Python _ Scala) Page 8


.addComponent(jButton2)
.addPreferredGap([Link],
[Link].DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton3))
.addGroup([Link]()
.addComponent(jLabel3)
.addPreferredGap([Link])
.addComponent(jTextField1, [Link].PREFERRED_SIZE, 73,
[Link].PREFERRED_SIZE)
.addGap(62, 62, 62)
.addComponent(jLabel4)
.addGap(18, 18, 18)
.addComponent(jTextField2, [Link].DEFAULT_SIZE, 73, Short.MAX_VALUE)))))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup([Link]()
.addContainerGap()
.addComponent(jScrollPane1, [Link].PREFERRED_SIZE, 360,
[Link].PREFERRED_SIZE)
.addContainerGap(10, Short.MAX_VALUE))
);
[Link](
[Link]([Link])
.addGroup([Link]()
.addGap(16, 16, 16)
.addComponent(jLabel1)
.addPreferredGap([Link])
.addComponent(jLabel2)
.addPreferredGap([Link])
.addComponent(jScrollPane1, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup([Link]([Link])
.addComponent(jLabel3)
.addComponent(jTextField1, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(jTextField2, [Link].PREFERRED_SIZE, [Link].DEFAULT_SIZE,
[Link].PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup([Link]([Link])
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3))
.addContainerGap(29, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed([Link] evt) {


// TODO add your handling code here:
connectToServer(); // Se connecter au serveur

private void jButton2ActionPerformed([Link] evt) {


// TODO add your handling code here:
sendAnswer(); // Envoyer la réponse et passer à la question suivante

private void jButton3ActionPerformed([Link] evt) {


// TODO add your handling code here:
[Link](0); // Quitter l'application

Code Complet(Java _ Python _ Scala) Page 9


}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see [Link]
*/
try {
for ([Link] info : [Link]()) {
if ("Nimbus".equals([Link]())) {
[Link]([Link]());
break;
}
}
} catch (ClassNotFoundException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch (InstantiationException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch (IllegalAccessException ex) {
[Link]([Link]()).log([Link], null, ex);
} catch ([Link] ex) {
[Link]([Link]()).log([Link], null, ex);
}
//</editor-fold>

/* Create and display the form */


[Link](new Runnable() {
public void run() {
new ClientQuiz().setVisible(true);
}
});
}

// Variables declaration - do not modify


private [Link] jButton1;
private [Link] jButton2;
private [Link] jButton3;
private [Link] jLabel1;
private [Link] jLabel2;
private [Link] jLabel3;
private [Link] jLabel4;
private [Link] jScrollPane1;
private [Link] jTextArea1;
private [Link] jTextField1;
private [Link] jTextField2;
// End of variables declaration
}

Code Complet(Java _ Python _ Scala) Page 10


Code Serveur Python
mardi 3 décembre 2024 21:06

import socket
import threading
import tkinter as tk
from tkinter import ttk
from datetime import datetime

class ServeurQuiz:
def __init__(self, root):
[Link] = root
[Link]("Serveur QUIZ")
[Link]("400x300")

self.client_count = 0
self.correct_answers = ["B", "B", "A", "A", "B", "A", "B", "A", "B", "A"]

# Widgets
self.label_title = [Link](root, text="Serveur QUIZ", font=("Algerian", 24), fg="dark blue")
self.label_title.pack(pady=10)

self.label_date = [Link](root, text="Date d'aujourd'hui", font=("Segoe UI", 12))


self.label_date.pack()

self.date_text = [Link](root, font=("Segoe UI", 12), fg="dark blue", state="readonly")


self.date_text.pack(pady=5)

# Buttons at the top


self.button_frame = [Link](root)
self.button_frame.pack(pady=10)

self.start_button = [Link](self.button_frame, text="Démarrer Serveur", font=("Segoe UI", 12),


command=self.start_server)
self.start_button.pack(side="left", padx=10)

self.stop_button = [Link](self.button_frame, text="Fermer Serveur", font=("Segoe UI", 12),


command=self.stop_server)
self.stop_button.pack(side="right", padx=10)

# Table at the bottom


self.client_table = [Link](root, columns=("N°Client", "Nom Thread", "Heure de connexion"),
show="headings", height=6)
self.client_table.heading("N°Client", text="N°Client")
self.client_table.heading("Nom Thread", text="Nom Thread")
self.client_table.heading("Heure de connexion", text="Heure de connexion")
self.client_table.pack(fill="both", padx=10, pady=10)

# Adjust the column width


self.client_table.column("N°Client", width=80, anchor="center")
self.client_table.column("Nom Thread", width=150, anchor="center")
self.client_table.column("Heure de connexion", width=150, anchor="center")

Code Complet(Java _ Python _ Scala) Page 11


self.update_date()

def update_date(self):
current_date = [Link]().strftime("%a %b %d %Y")
self.date_text.config(state="normal")
self.date_text.delete(0, [Link])
self.date_text.insert(0, current_date)
self.date_text.config(state="readonly")

def start_server(self):
self.server_socket = [Link](socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.bind(('localhost', 50000))
self.server_socket.listen(5)
self.start_button.config(state="disabled")
[Link](target=self.accept_clients).start()

def accept_clients(self):
while True:
client_socket, client_address = self.server_socket.accept()
self.client_count += 1
self.add_client_to_table(f"Client-{self.client_count}", f"Thread-{self.client_count}",
[Link]().strftime("%H:%M:%S"))
[Link](target=self.handle_client, args=(client_socket,)).start()

def add_client_to_table(self, client_number, thread_name, connection_time):


if len(self.client_table.get_children()) >= 4:
self.client_table.delete(self.client_table.get_children()[0]) # Supprimer la première ligne si on dépasse 4
clients
self.client_table.insert("", "end", values=(client_number, thread_name, connection_time))

def handle_client(self, client_socket):


score = 0
try:
for i, correct_answer in enumerate(self.correct_answers):
client_answer = client_socket.recv(1024).decode()
if client_answer.strip().upper() == correct_answer:
score += 1
client_socket.sendall(f"Votre score est : {score}".encode())
finally:
client_socket.close()

def stop_server(self):
if hasattr(self, 'server_socket'):
self.server_socket.close()
self.start_button.config(state="normal")
self.stop_button.config(state="disabled")

if __name__ == "__main__":
root = [Link]()
app = ServeurQuiz(root)
[Link]()

Code Complet(Java _ Python _ Scala) Page 12


Code Client Python
mardi 3 décembre 2024 21:06

import socket
import threading
import tkinter as tk
from tkinter import messagebox
from tkinter import scrolledtext

SERVER_ADDRESS = 'localhost'
SERVER_PORT = 50000

class ClientQuizApp:
def __init__(self, root):
[Link] = root
[Link]("Client QUIZ")
[Link]("400x500")

[Link] = None
[Link] = None
self.in_ = None
[Link] = False
[Link] = [
"Q1. Une @ IPV6 tient sur :\n A. 32 bits\n B. 128 bits",
"Q2. Un numéro de port sert à : A. Identifier une machine B. Identifier une application",
"Q3. L'API Socket est au niveau : A. Transport B. Application",
"Q4. TCP fonctionne en mode : \n A. Connecté\n B. Non connecté",
"Q5. UDP est :\n A. Fiable\n B. Non Fiable ",
"Q6. [Link] est une @ IPV4 :\n A. Privée\n B. Public ",
"Q7. [Link] est une @ IPV4 :\n A. Classe D\n B. Classe C ",
"Q8. ServerSocket est la classe Java qui implémente :\n A. Les Sockets d’écoute\n B. Les Sockets de transfert",
"Q9. La classe Date est définie dans :\n A. [Link]\n B. [Link] ",
"Q10. La classe InetAddress correspond à :\n A. Adresse IP\n B. Adresse URL"
]
self.current_question_index = 0

# Initialisation de l'interface graphique


self.init_ui()

def init_ui(self):
# Titre
self.label_title = [Link]([Link], text="Client QUIZ", font=("Algerian", 36), fg="green")
self.label_title.pack(pady=10)

# Affichage de la question
self.label_question = [Link]([Link], text="Question ?", font=("Segoe UI", 12))
self.label_question.pack()

self.text_area = [Link]([Link], width=40, height=5, wrap=[Link], font=("Segoe UI", 12))


self.text_area.pack(pady=10)

# Frame pour les réponses et le score


frame_bottom = [Link]([Link])
frame_bottom.pack(pady=10)

# Réponse de l'utilisateur
self.label_answer = [Link](frame_bottom, text="Ma Réponse", font=("Segoe UI", 12))
self.label_answer.grid(row=0, column=0, padx=10)

self.entry_answer = [Link](frame_bottom, font=("Segoe UI", 12), fg="green", width=10) # Largeur réduite


self.entry_answer.grid(row=0, column=1, padx=10, ipadx=20)

Code Complet(Java _ Python _ Scala) Page 13


# Score
self.label_score = [Link](frame_bottom, text="Mon Score", font=("Segoe UI", 12))
self.label_score.grid(row=0, column=2, padx=10)

self.entry_score = [Link](frame_bottom, font=("Segoe UI", 12), fg="green", state="readonly", width=10) # Largeur réduite
self.entry_score.grid(row=0, column=3, padx=10, ipadx=20)

# Frame pour les boutons


frame_buttons = [Link]([Link])
frame_buttons.pack(pady=20)

self.button_connect = [Link](frame_buttons, text="Connecter", font=("Segoe UI", 12), command=self.connect_to_server)


self.button_connect.grid(row=0, column=0, padx=10)

self.button_next = [Link](frame_buttons, text="Question Suivante", font=("Segoe UI", 12), command=self.send_answer)


self.button_next.grid(row=0, column=1, padx=10)

self.button_exit = [Link](frame_buttons, text="Quitter", font=("Segoe UI", 12), command=self.exit_app)


self.button_exit.grid(row=0, column=2, padx=10)

def connect_to_server(self):
try:
[Link] = [Link](socket.AF_INET, socket.SOCK_STREAM)
[Link]((SERVER_ADDRESS, SERVER_PORT))
[Link] = [Link]('w')
self.in_ = [Link]('r')

[Link] = True
self.text_area.delete(1.0, [Link])
self.display_question()
except Exception as e:
[Link]("Erreur", f"Erreur de connexion: {str(e)}")

def display_question(self):
if self.current_question_index < len([Link]):
self.text_area.delete(1.0, [Link])
self.text_area.insert([Link], [Link][self.current_question_index])
else:
self.text_area.delete(1.0, [Link])
self.text_area.insert([Link], "Fin des questions. Cliquez sur 'Quitter'.")

def send_answer(self):
if not [Link]:
self.text_area.delete(1.0, [Link])
self.text_area.insert([Link], "Veuillez d'abord vous connecter au serveur.")
return

response = self.entry_answer.get().strip()
if not response:
[Link]("Attention", "Veuillez saisir une réponse avant de continuer.")
return

[Link](response + "\n")
[Link]()
self.current_question_index += 1
self.display_question()

if self.current_question_index == len([Link]):
score = self.in_.readline().strip()
self.entry_score.config(state="normal")
self.entry_score.delete(0, [Link])
self.entry_score.insert(0, score)
self.entry_score.config(state="readonly")

Code Complet(Java _ Python _ Scala) Page 14


self.entry_score.config(state="readonly")
[Link]()
[Link] = False

def exit_app(self):
if [Link]:
[Link]()
[Link]()

if __name__ == "__main__":
root = [Link]()
app = ClientQuizApp(root)
[Link]()

Code Complet(Java _ Python _ Scala) Page 15


Code Serveur Scala
mardi 3 décembre 2024 21:07

[Link].{Application,Platform}
[Link]
[Link].{Button,Label,TextArea,TextField}
[Link].{HBox,Pane,VBox}
[Link]

[Link]
[Link].{ServerSocket,Socket}
[Link].{BufferedReader,InputStreamReader,PrintWriter}
[Link]
[Link]
[Link]
[Link]
[Link]

objectserveurextendsApp{
[Link](classOf[MyServer])
}

//Classereprésentantunelignedutableau
caseclassClientInfo(clientNumber:Int,threadName:String,connectionTime:String)

classMyServerextendsApplication{
@volatilevarserverRunning=false
varclientCount=0//Compteurdeclients
valclientData:ObservableList[ClientInfo]=[Link]()//Donnéespourletableau

overridedefstart(primaryStage:Stage):Unit={
//Déclarationanticipéedesvariablesnécessaires
valtextArea=newTextArea()//Utilisationd'unTextAreapourafficherlesinformationsdesclients
[Link](false)//RendreleTextAreanonéditable
[Link](true)//ActiverleretouràlalignedansleTextArea
[Link](420,150)//FixerlatailleduTextArea
//Boutonspourdémarrer
valbutton1=newButton("DémarrerServeur")
[Link](10)
[Link]("-fx-background-color:blue;-fx-text-fill:white;")
//Boutonspourarrêterleserveur
valbutton2=newButton("FermerServeur")
[Link]("-fx-background-color:blue;-fx-text-fill:white;")

vallabel1=newLabel("ServeurQuiz")
[Link]("-fx-font-size:36px;-fx-font-family:'Algerian';-fx-text-fill:blue;")
[Link](130)

vallabel2=newLabel("Dated'aujourd'hui:")
valtextField=newTextField(s"${[Link]()}")
[Link](false)

valaligneTexte=newVBox(5,label2,textField)
valaligneButton=newHBox(230,button1,button2)

varserverSocket:Option[ServerSocket]=None
varclientSocket:Option[Socket]=None
varout:Option[PrintWriter]=None
varin:Option[BufferedReader]=None

Code Complet(Java _ Python _ Scala) Page 16


varin:Option[BufferedReader]=None
@volatilevari=0//Indexdelaquestionactuelle
valReponse=ArrayBuffer("B","B","A","A","B","A","B","A","B","A")

//Méthodepourarrêterleserveur
defstopServer():Unit=Future{
try{
serverRunning=false
[Link](_.close())
[Link](_.close())
[Link](_.close())
[Link](_.close())
i=0
in=None
out=None
clientSocket=None
serverSocket=None
println("Serveurarrêté.")
[Link](()=>println("Serveurprêtàredémarrer."))//Miseàjourasynchrone
}catch{
caseex:Exception=>
println(s"Erreurlorsdel'arrêtduserveur:${[Link]}")
}
}

[Link](_=>{
if(serverRunning){
println("Leserveurestdéjàencoursd'exécution.")
return
}

serverRunning=true
Future{
try{
serverSocket=Some(newServerSocket(12345))
println("Serveurdémarré,enattentedeconnexions...")

while(serverRunning){
valsocket=[Link]()//Accepteruneconnexionclient
clientCount+=1
valthreadName=s"Thread-$clientCount"
valconnectionTime=[Link]().withNano(0).toString+"GMT"

//AjouterlesinformationsduclientdansleTextArea
[Link](()=>{
valclientInfo=ClientInfo(clientCount,threadName,connectionTime)
valclientInfoText=s"Client${[Link]}|${[Link]}|${[Link]}"
valupdatedText=[Link]+"\n"+clientInfoText
[Link](updatedText)//AjouterlesinformationsdeclientauTextArea
if([Link]("\n").length>4){
//Limiterà4lignesdansleTextArea
vallines=[Link]("\n").drop(1).mkString("\n")
[Link](lines)
}

println(s"Clientajouté:$clientData")
})

println(s"Client$clientCountconnecté!")
Future{
vallocalOut=newPrintWriter([Link],true)
vallocalIn=newBufferedReader(newInputStreamReader([Link]))

Code Complet(Java _ Python _ Scala) Page 17


vallocalIn=newBufferedReader(newInputStreamReader([Link]))
varlocalIndex=0

try{
while(serverRunning){
valmessage=[Link]()
if(message==null)thrownewException("Clientdéconnecté.")
valresponse=if(localIndex>9||message!=Reponse(localIndex))"false"else"true"
[Link](response)
localIndex+=1
}
}catch{
caseex:Exception=>
println(s"Erreurpourleclient$clientCount:${[Link]}")
}finally{
[Link]()
[Link]()
[Link]()
}
}([Link])
}
}catch{
caseex:Exception=>
println(s"Erreurduserveur:${[Link]}")
}finally{
stopServer()
}
}
})
//Boutonpourfermerleserver
[Link](_=>stopServer())

//ConfigurationduTextArea
[Link](30)
[Link](200)

valroot=newPane()
[Link](label1,aligneTexte,aligneButton,textArea)

[Link](180)
[Link](80)
[Link](30)
[Link](150)

valscene=newScene(root,500,400)
[Link]("ServeurScalaavecJavaFX")
[Link](scene)
[Link](false)
[Link]()
}
}

Code Complet(Java _ Python _ Scala) Page 18


Code Client Scala
mardi 3 décembre 2024 21:08

[Link].{Application,Platform}
[Link]
[Link].{HBox,Pane}
[Link].{Button,Label,TextArea,TextField}
[Link]
[Link]
[Link]
[Link].{BufferedReader,InputStreamReader,PrintWriter}

objectMainextendsApp{
[Link](classOf[client])
}

classclientextendsApplication{
overridedefstart(primaryStage:Stage):Unit={
//Questions
valQ1="[Link]@IPV6tientsur:\nA.32bits\nB.128bits"
valQ2="[Link]érodeportsertà:\[Link]\[Link]"
valQ3="Q3.L’APISocketestauniveau:\[Link]\[Link]"
valQ4="[Link]\[Link]é\[Link]é"
valQ5="[Link]:\[Link]\[Link]"
valQ6="Q6.10.0.0.1estune@IPV4:\[Link]ée\[Link]"
valQ7="Q7.197.0.0.1estune@IPV4:\[Link]\[Link]"
valQ8="[Link]émente:\[Link]’écoute\[Link]"
valQ9="[Link]éfiniedans:\[Link]\[Link]"
valQ10="[Link]à:\[Link]\[Link]"
vars=0
//Déclarationdesvariablespartagées
varclientSocket:Option[Socket]=None//Serainitialisélorsquebutton1estcliqué
varout:Option[PrintWriter]=None//Fluxdesortie(serainitialiséaveclesocket)
varin:Option[BufferedReader]=None//Fluxd'entrée(serainitialiséaveclesocket)
vallabel=newTextArea()
[Link](false)
[Link](40)//Positionhorizontale
[Link](70)//Positionverticale
[Link](370,120)
vallabel2=newLabel("Questions:")
[Link](30)//Positionhorizontale
[Link](50)
[Link]("-fx-font-size:14px;-fx-font-weight:bold;")
vallabel3=newLabel("ClientQuiz")
[Link](130)//Positionhorizontale
[Link](0)
//Changerlatailleetlacouleurdutextedulabel
[Link]("-fx-font-size:36px;-fx-font-family:'Algerian';-fx-text-fill:green;")//Tailleetcouleur
valtextField1=newTextField()
//Changerlatailledelapolicedutexte
[Link]("-fx-font-size:10px;")//Tailledepolicede18pixels
valtextField2=newTextField()
[Link]("-fx-font-size:10px;")
//RendreleTextField2nonmodifiable
[Link](false)
[Link](s"$s/10")//initialiselascoreazero

vallabelField1=newLabel("MaReponse")
[Link]("-fx-font-size:14px;-fx-font-weight:bold;")

vallabelField2=newLabel("MonScore")

Code Complet(Java _ Python _ Scala) Page 19


vallabelField2=newLabel("MonScore")
[Link]("-fx-font-size:14px;-fx-font-weight:bold;")

valaligne_field=newHBox(30)
aligne_field.[Link](labelField1,textField1,labelField2,textField2)
aligne_field.setLayoutY(280)

valbutton1=newButton("Connecter")
[Link]("-fx-background-color:green;-fx-text-fill:white;")
valbutton2=newButton("QuestionSuivante")
[Link]("-fx-background-color:green;-fx-text-fill:white;")

valbutton3=newButton("Quitter")
[Link]("-fx-background-color:green;-fx-text-fill:white;")

valaligne_button=newHBox(105)
aligne_button.[Link](button1,button2,button3)
aligne_button.setLayoutY(360)

//PariteImplementationdelaLogique
[Link](_=>[Link]())
[Link](_=>{clientSocket=Some(newSocket("localhost",12345))//Connexionauserveur
out=[Link](socket=>newPrintWriter([Link],true))
in=[Link](socket=>newBufferedReader(newInputStreamReader([Link])))
s=0
[Link](Q1)
})

valQuestions=ArrayBuffer(Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10)
vari=0
[Link](_=>{
if(!([Link]().equals("A"))&!([Link]().equals("B"))){
[Link](Questions(i)+"\nEntrezsoitAouB")
}else{
i+=1
if(i>9){
[Link]("FINDUQUIZ")
}else{
if(clientSocket==None){
[Link]("Veuillezvousconnecterauserveur")
}else{
[Link](Questions(i))//Afficherlaprochainequestion
}
}

try{
[Link](_.println([Link]()))//Envoyerlaréponseauserveur
[Link]{reader=>
valresponse=[Link]()//Lirelaréponseenvoyéeparleserveur
if(response==null){
//Silaconnexionestperdue,afficherunmessage
thrownewException("Connexionperdueavecleserveur.")
s=0
}
elseif(response=="true"){
s+=1

Code Complet(Java _ Python _ Scala) Page 20


}
}catch{
casee:Exception=>
//Afficherunmessagedansl'interfaceutilisateur
[Link](()=>{
[Link](s"Erreur:${[Link]}")
})
[Link](_.close())
[Link](_.close())
[Link](_.close())
in=None
out=None
clientSocket=None
i=1
s=0

[Link](s"$s/10")//Mettreàjourlescore
}
[Link]("")
})

valroot=newPane()//Conteneurvertical
[Link](label,aligne_button,label2,label3,aligne_field)

valscene=newScene(root,450,400)
[Link]("ApplicationScalaavecJavaFX")
[Link](scene)
[Link](false)//Empêcheleredimensionnementdelafenêtre
[Link]()

}
}

Code Complet(Java _ Python _ Scala) Page 21

You might also like