KENZA15A
-
31 déc. 2013 à 03:45
KENZA15A
Messages postés2Date d'inscriptionjeudi 5 décembre 2013StatutMembreDernière intervention 1 janvier 2014
-
1 janv. 2014 à 01:09
Bonjour,
dans le domaine du reseau couche liaison il existe plusieurs protocles dont chacun possede des fonctionnalités differentes
j'ai programmer une simmulation du protocole n2 qui consite a controler le flux (reguler la vitesse du recepteur a celle de l'emetteur(client en verifiant a chaque fois l'espace memoire disponible chez le recepteur(serveur))
j'ai creer deux classe et deux formes en utilisant netbeans comme IDE
mnnt je dois programmer le protocol 3
en ajoutant un controle d'erreur et un dg qui se declanche a un moment donné pour retransmettre le msg en cas d'erreur detectée par le recepteur
je dois utiliser pour cela la classe timer et la classe timertask mais j'arrive pas à les faire inclure dans mon code voici les classes du protocole 2 svp aider moi j'ai vraiment besoin de
votre aide et mrc d'avance
coté emetteur(client)
/*emetteur*/
package client;
import java.io.*;
import java.net.Socket;
public class Client{
public static void main(String[] args) throws IOException {
try {
entree_client fen_ser = new entree_client();//instance de la fenetre
fen_ser.setVisible(true);
Socket soc = new Socket("127.0.0.1", 2012);//connexion
PrintWriter sortie =new PrintWriter(soc.getOutputStream(), true);//contient le msg a envoyé par le client
BufferedReader entree = new BufferedReader(new InputStreamReader(soc.getInputStream()));//recevoir le credit du serveur
do {
String credit = entree.readLine();//lire le credit envoyé par le serveur
entree_client.Affichage_msg.append(credit);//afficher le credit dans le txtarea
sortie.println("abcd");//msg a envoyé
entree_client.Affichage_msg.append("\n msg est bien envoyé \n");
/**
*
* @author rebelle
*/
public class entree_client extends javax.swing.JFrame {
/** Creates new form clientinter */
public entree_client() {
initComponents();
}
/** 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">//GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
Affichage_msg = new javax.swing.JTextArea();
/**
* @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 http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(entree_client.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(entree_client.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(entree_client.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(entree_client.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new entree_client().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
public static javax.swing.JTextArea Affichage_msg;
// End of variables declaration//GEN-END:variables
}
public static void main(String[] args) throws IOException {
entree_serveur fen_ser = new entree_serveur();//instance de la fenete
fen_ser .setVisible(true);
// TODO code application logic here
try {
ServerSocket sersoc = new ServerSocket(2012);//ouvrir le port 2012
entree_serveur.affichage.append("attente d'un client");//afficher attente
//**** recevoir la connexion qui vient du client et la mettre dans l'objet soc **** //
Socket soc = sersoc.accept();//accepter la connexion du client
entree_serveur.affichage.append("\n un client vient de se connecter");
//***** Création des flux de sortie et d'entrée ****//
PrintWriter sortie =new PrintWriter(soc.getOutputStream(), true);//flux de sortie
fen_ser .sortie = sortie;
BufferedReader entree = new BufferedReader(new InputStreamReader(soc.getInputStream()));//flux d'entree contient le msg du client
// int k=0;
int n = 20, m = 0;//n espace libre du buffer m espace occupé
String msg_lu;
msg_lu = entree.readLine();//lire le msg envoyé par le client
int i = msg_lu.length();//langeur de msg envoyé
//initialisation des elements de la fenetre
fen_ser .i = i;
n = fen_ser .n;
m = fen_ser .m;
fen_ser .n = n - i;//maj de l'espace libre dans la fenetre
fen_ser .m = m + i;//maj de l'espace occupé dans la fenetre
if (i <= n) {//si la langeur du msg envoyé < la taille du buffer
entree_serveur.affichage.append("\n" +"le message reçu est :"+ msg_lu);//accepter le msg et l'afficher
} else {
entree_serveur.affichage.append("Espace insufisant message non reçu");//sinon le msg n'est pas reçu
}
n = n - i;//maj de l'espace du buffer
m = m + i;//maj de l'espace occupé
entree_serveur.espace_libre.setText("" + n);//afficher l'espace libre du buffer dans le label espace_libre
entree_serveur.espace_occupee.setText("" + m);//afficher l'espace occupé du buffer dans le label espace_occupee
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* serveurinter.java
*
* Created on 5 déc. 2013, 10:36:58
*/
/**
*
* @author rebelle
*/
public class entree_serveur extends javax.swing.JFrame {
public PrintWriter sortie;
public int n, m, i;//taille espace occupe taille du msg lu
/** Creates new form serveurinter */
public entree_serveur() {
initComponents();
n=20; m=0;
}
/** 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 javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
affichage = new javax.swing.JTextArea();
vider = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
libre = new javax.swing.JLabel();
occupé = new javax.swing.JLabel();
espace_libre = new javax.swing.JLabel();
espace_occupee = new javax.swing.JLabel();
envoyer = new javax.swing.JButton();
/**
* @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 http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(entree_serveur.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(entree_serveur.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(entree_serveur.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(entree_serveur.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new entree_serveur().setVisible(true);
}
});
}
// Variables declaration - do not modify
public static javax.swing.JTextArea affichage;
public static javax.swing.JButton envoyer;
public static javax.swing.JLabel espace_libre;
public static javax.swing.JLabel espace_occupee;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
public static javax.swing.JLabel libre;
public static javax.swing.JLabel occupé;
public static javax.swing.JButton vider;
// End of variables declaration
}
nb:pour que le code fonctionne vous dever lancer le serveur avant l'emetteur
public class TimerPerso { public static void main(String[] args) {
long temps = 2000; // délai avant de répéter la tache : 2000 = 2 seconde long startTime = 0; // délai avant la mise en route (0 demarre immediatement) Timer timer = new Timer(); // création du timer TimerTask tache = new TimerTask() { // création et spécification de la tache à effectuer public void run() { //TODO ici se qui doit être effectué System.out.println("salut"); } }; timer.scheduleAtFixedRate(tache, startTime, temps); // ici on lance la mecanique } }
KENZA15A
Messages postés2Date d'inscriptionjeudi 5 décembre 2013StatutMembreDernière intervention 1 janvier 2014 1 janv. 2014 à 01:09
mrc bcp irmeche
pour votre aide je c aussi q'au lieu de definir le TimerTask dans la meme classe je peut le definir comme une classe separée qui herite de la classe TimerTask mais comme j'ai deja dit le timer que je veut l'utiliser fonctionne avec une interface graphique(precisement un bouton qui reenvoie le mm msg deja envoyé apres un moment donné cad declanche le timer)
et je veut aussi afficher un countdown (le timer se deminue) du timer dans un TextField.est ce que vous pouvez m'aider ??et mrc encore une fois
1 janv. 2014 à 01:09
pour votre aide je c aussi q'au lieu de definir le TimerTask dans la meme classe je peut le definir comme une classe separée qui herite de la classe TimerTask mais comme j'ai deja dit le timer que je veut l'utiliser fonctionne avec une interface graphique(precisement un bouton qui reenvoie le mm msg deja envoyé apres un moment donné cad declanche le timer)
et je veut aussi afficher un countdown (le timer se deminue) du timer dans un TextField.est ce que vous pouvez m'aider ??et mrc encore une fois