[Socket] Client Delphi vers Serveur Java
Résolu
Dinheru
Messages postés
1019
Date d'inscription
Statut
Membre
Dernière intervention
-
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Alors voila, j'ai un petit problème pour l'envoie de texte vers mon serveur en Java.
J'utilise le composant TClientSocket sous Delphi 4 Client/Serveur.
Pour ma connexion je fais comme ça :
Donc pour envoyer un message je fais ceci :
La connexion au serveur Java marche bien mais quand j'envoie un message ça bloque.
En fait le serveur Java utilise un BufferedReader(input) et un PrintWriter(output) et j'ai l'impression qu'il ne détecte pas ma fin de chaine.
La méthode Java permettant de recevoir les messages :
La méthode run du serveur Java :
Le blocage ce situe au niveau du renommage.
Je lui envoie un nom ( Tdr ) et ensuite un message( Ceci est un test ), et ça bloque. Quand je coupe mon apli Delphi je voie tout ce que j'ai envoyé qui est concaténé :
Donc si vous avez une idée de comment régler ce problème ça m'aiderais beaucoup.
Merci d'avance.
Alors voila, j'ai un petit problème pour l'envoie de texte vers mon serveur en Java.
J'utilise le composant TClientSocket sous Delphi 4 Client/Serveur.
Pour ma connexion je fais comme ça :
AjoutTrace('Initialisation serveur Wav'); ClientSocket1.Host := '127.0.0.1'; ClientSocket1.Port := 1521; ClientSocket1.ClientType := ctNonBlocking; ClientSocket1.Active := true;
Donc pour envoyer un message je fais ceci :
ClientSocket1.Socket.SendText(str);
La connexion au serveur Java marche bien mais quand j'envoie un message ça bloque.
En fait le serveur Java utilise un BufferedReader(input) et un PrintWriter(output) et j'ai l'impression qu'il ne détecte pas ma fin de chaine.
La méthode Java permettant de recevoir les messages :
private String Lire(){ String str= null; if (this.connect == true) { try { this.output.flush(); str = this.input.readLine(); return str; } catch (IOException e) { e.printStackTrace(); return "ERREUR_LIRE"; } } return "ERREUR_LIRE"; }
La méthode run du serveur Java :
public void run() { String Str = new String(); while (this.connect) { Str = this.Lire(); if (Str.compareTo("!/deconnect/!")==0) { this.Ctrl.getIhm().Afficher(this.Nom+" : DECONNECTION"); this.Deconnection(); } else if(Str.startsWith("!/Nom/!")) { String ancienNom = this.Nom; String nouveaunom = Str.substring(7); if (this.Ctrl.Recherche_Client_par_nom(nouveaunom)==-1) { this.Nom=Str.substring(7); this.Ctrl.getIhm().Afficher("Changement de nom de l'application :"+ancienNom +" en "+this.Nom); this.Ecrire(this.Nom); this.CreeRepertoire(); } else { this.Ecrire(this.Nom); } } else { this.Ctrl.getIhm().Afficher("Message reçu :"+Str); this.Ecrire(this.Text_to_wav(Str)); } this.nb_transformation++; } }
Le blocage ce situe au niveau du renommage.
Je lui envoie un nom ( Tdr ) et ensuite un message( Ceci est un test ), et ça bloque. Quand je coupe mon apli Delphi je voie tout ce que j'ai envoyé qui est concaténé :
Changement de nom de l'application : Client en TdrCeci est un test
Donc si vous avez une idée de comment régler ce problème ça m'aiderais beaucoup.
Merci d'avance.
A voir également:
- [Socket] Client Delphi vers Serveur Java
- Delphi 7 - Télécharger - Langages
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
2 réponses
Salut.
Je ne connait pas grand chose en Java et Delphi, par contre, je sais que en socket il faut faire "\r\n" pour une fin de ligne. Et j'ai vu que tu utilisais un getline().
Donc, tu peux essayer en envoyant ces caractères à la fin de ta chaine.
Info, il s'agit des caractères ascii 10 et 13 si delphi ne supporte pas la notation \r\n
Je ne connait pas grand chose en Java et Delphi, par contre, je sais que en socket il faut faire "\r\n" pour une fin de ligne. Et j'ai vu que tu utilisais un getline().
Donc, tu peux essayer en envoyant ces caractères à la fin de ta chaine.
Info, il s'agit des caractères ascii 10 et 13 si delphi ne supporte pas la notation \r\n