IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Envoi de requetes SQL en UDP


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut Envoi de requetes SQL en UDP
    Bonjour a tous,

    Cela fait 1 semaine que je cherche a faire la chose suivante sans succes
    Alors voila je m'explique :

    j ai une interface client sous eclipse et un serveur sur lequel j ai installe sql serveur comme sgbd.
    A l'heure actuelle c'est le client qui interroge le serveur et affiche le resultat des requetes dans des jtables.Mon directeur de projet m'a demande d inverser ce systeme et faire que ce soit le serveur aui envois le resultat des requetes au client donc alimenter mes jtables a partir du serveur.
    jai donc commencer a le faire en udp avec les sockets .Mon probleme est le suivant comment envoyer le resultat d'une requete sql dans une trame udp et faire que cette requete alimente directement le jtable sur le client.

    voici pour l'instant un extrait de code du client qui interroge le serveur et ou les jtables sont alimentees :

    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
    private JTable getJTableCMS() {
    	Timer minuteur = new Timer();
     
    /*	
    	Timer minuteur = new Timer();
    	TimerTask refresh_data = new TimerTask() {
    		 public void run() {
     
    		 	}
    			  };
    			  minuteur.schedule(refresh_data, 0, 100);*/
     
    	if (jTableCMS == null) {
     
     
    				  jTableCMS = new JTable();
     
    					jTableCMS.setBounds(new Rectangle(215, 145, 938, 145));
     
    					jTableCMS.setFont(new Font("GE Inspira", Font.BOLD | Font.ITALIC, 24));
    					jTableCMS.setForeground(new Color(51, 0, 204));
    					jTableCMS.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
    					jTableCMS.setGridColor(new Color(122, 138, 153));
    					jTableCMS.setIntercellSpacing(new Dimension(1, 1));
    					jTableCMS.setRowHeight(80);
    					jTableCMS.setRowSelectionAllowed(false);
    					jTableCMS.setSelectionBackground(new Color(184, 207, 229));
    					jTableCMS.setSelectionForeground(new Color(238, 238, 238));
    					jTableCMS.setShowGrid(false);
    					jTableCMS.setShowHorizontalLines(false);
    					jTableCMS.setShowVerticalLines(false);
    					jTableCMS.setBackground(Color.white);
    					TimerTask refresh_data = new TimerTask() {
    						 public void run() {
     
    					dataBase = new JDBCAdapter(
    				            pilote,
    				            host,
    				            login,
    				            pw);
     
     
    		dataBase.executeQuery(requete_CMS);
    c 'est ici que je voudrais recuperer le message du serveur et alimenter ma jtable
    et faire un truc du style
    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
    try{
    				
    
    				
    				byte[] buffer = new byte[1024]; 
    				String ch; 
    				DatagramPacket p = new DatagramPacket(buffer, buffer.length); 
    				DatagramSocket s = new DatagramSocket(4321); 
    			
    				while(true) { 
    				
    				
    				s.receive(p); 
    				ch = new String(buffer, 0, 0, p.getLength()); 
    				
    				
    				majtable.setText(ch);
    
    				jTableCMS.setModel(dataBase);
    					jTableCMS.updateUI();
    	
    				}
    			  };
    		
    			  minuteur.schedule(refresh_data, 0, 1500);
    			    
    	
    	}
    				  
    	
    
    	return jTableCMS;
    		
    }

    Merci.
    Bonne fin de dimanche a tous.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    es-tu au courant que

    1. quand on met en place ce genre de configuration, on n'envoie pas la requete sql au seveur depuis le client (sinon le client peut envoyer n'importe quoi, y compris des "drop database", pas cool). On code les requetes coté serveur et on fournis au client un protocole permettant de les choisir (que ce soit l'utilisation d'un simple index ou autre).
    2. Le protocole udp ne garanti pas que les données seront transmises sans altération, ce qui altère méchament la fiabilité de ton transfert
    3. Le protocole udp est facilement falsifiable. Si quelqu'un envoie des requetes trafiquée à ton serveur pour le faire tomber, tu ne saura jamais d'ou viens l'attaque. (l'IP spoofing est très facile en udp)
    4. Généralement on réserve l'udp pour des protocoles acceptant des pertes de données mais nécessitant un flux continu d'informations (udp étant plus rapide que tcp)

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut re UDP/SQL
    Bonsoir,
    Merci tout dabord pour ta reponse.
    effectivement je sais , mais en fait je bosse sur des donnees temps reel et donc je suis contraint d utiliser ce protocole puisqu il n ya pas d ack qui sont envoyes donc c plus rapide que tcp.
    Apres comment est ce que je pourrai faire pour inverser ca ? vers quoi je dois orienter mes recherches ? ya til un code type java que tu pourrais me fournir pour inverser le shema.

    Merci

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    typiquement tu aurais ca

    client -> "get list de machin" -> seveur
    serveur -> "select * from machin -> database
    database -> statement result -> serveur
    serveur -> données sur la couche réseau (à toi de définir ton format) -> client
    client -> structure les données -> UI

    maintenant, les commande client -> serveur ainsi que le format des réponses, c'est à toi de le définir. Mais si t'as beaucoup de données, tu va souffrir avec l'udp. Entre les paquets perdus, ceux qui arrivent dans le désordre et ceux qui seront corrompu

Discussions similaires

  1. Bouton simple envoie requete sql
    Par Abime dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/08/2009, 23h55
  2. interrogation sur l'envoi des requetes sql
    Par goute dans le forum Hibernate
    Réponses: 3
    Dernier message: 12/06/2009, 00h14
  3. Envoi d'une valeur d'une requete sql dans une variable ?
    Par olivierc25 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/04/2007, 13h11
  4. Envois simple d'une requete sql
    Par nicoaix dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/01/2007, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo