Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
835 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème application client/server, envoie et reception de bytes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème application client/server, envoie et reception de bytes

n°1853793
k3nsou2
Posté le 21-02-2009 à 19:07:10  profilanswer
 

Bonjour,  
 
je veux réaliser une application permettant l'échange de fichier entre client et server. Pour l'instant, mon application permet d'envoyer un fichier d'un client à un server, par contre avant l'envoi du fichier je veux envoyer une sorte de message pour dire au server de se préparé à la réception.
Mon problème vient de la reception de celui-ci par le server.  
(Toute mes données sont envoyées en bytes)
 
Client:
 
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 10001);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
 
String action = inFromUser.readLine();
outToServer.writeBytes(action);
 
Server :
 
private DataOutputStream sortie; // pour gestion du flux de sortie
private InputStream entree; // pour gestion du flux d'entrée
...
sortie = new DataOutputStream(sock.getOutputStream());
entree = (sock.getInputStream());
...
byte []buffer_action = new byte[1024];
String mess;  
entree.read(buffer_action,0,buffer_action.length);  
mess = new String(buffer_action,0,buffer_action.length);
System.out.println(mess);
new ReceptFichier(nomfichier,sortie,entree); //recupération du fichier
 
Si j'entre 15, l'affichage m'écrit un 1 avec plein de carrée à la suite ... et le 5 lui est envoyé dans mon fichier crée. Quelqu'un pourrait m'expliquer pourquoi je ne récupère pas 15 en entier ?
(l'envoie du fichier marche très bien, c'est juste mon message qui rate...).
 
Merci .

mood
Publicité
Posté le 21-02-2009 à 19:07:10  profilanswer
 

n°1853869
superbob56
Posté le 21-02-2009 à 23:54:54  profilanswer
 

Franchement ... je ne vois pas. Peut-être un problème d'encodage de caractère ?
Sinon, tu fais un read de 1024 octets, tu risque de lire (pour afficher) plus que ce que l'utilisateur aura entré au clavier et une partie du fichier (ou l'inverse ...)


---------------
By bob.
n°1854048
post_it
Hmmmm!...
Posté le 23-02-2009 à 08:56:47  profilanswer
 

En lisant la javadoc, il semble que si tu envoies des données avec un DataOutputStream, il faut les récupérer avec un DataInputStream.

n°1866164
HANNOU
Posté le 26-03-2009 à 13:44:40  profilanswer
 

coté client  
import java.io.*;
import java.net.*;
 
class ClientTCP  
{
 
    public static void main(String argv[]) throws Exception
    {
 
String phraseModifiee;
 
//Créer le flux d'entrée
BufferedReader entreeDepuisUtilisateur =new BufferedReader(new InputStreamReader(System.in));
 
//Créer la socket client,la connecter au serveur
Socket socketClient = new Socket("localhost", 6789);
 
//Créer le flux de sortie attaché à la socket
DataOutputStream sortieVersServeur = new DataOutputStream(socketClient.getOutputStream());
 
//Créer le flux d'entrée attaché à la socket
BufferedReader entreeDepuisServeur =new BufferedReader(new InputStreamReader(socketClient.getInputStream()));
 
//Lire la chaîne  entrée depuis le client
String sentence = entreeDepuisUtilisateur.readLine();
System.out.println(sentence);
 
//Envoyer la chaîne au serveur
 sortieVersServeur.writeBytes(sentence + "\n" );
 
//Lire la chaîne depuis le serveur
phraseModifiee = entreeDepuisServeur.readLine();
System.out.println("RECU DU SERVEUR: " + phraseModifiee);
socketClient.close();
}
}
 
 
coté serveur
import java.io.*;
import java.net.*;
 
class ServeurTCP  
{
 
     public static void main(String argv[]) throws Exception
    {
 
String phraseClient;
String phraseMajuscule;
 
//Créer une socket d'écoute sur le port 6789
ServerSocket socketEcoute = new ServerSocket(6789);
 
while(true) { // boucle infinie
 
//Attendre une connexion d'un client
Socket socketConnexion = socketEcoute.accept();
 
//Créer le flux d'entrée attaché à la socket
BufferedReader entreeDepuisClient =new BufferedReader(new InputStreamReader(socketConnexion.getInputStream()));
 
//Créer le flux de sortie attaché à la socket
DataOutputStream sortieVersClient = new DataOutputStream(socketConnexion.getOutputStream());
 
//Lire la chaîne depuis la socket
phraseClient = entreeDepuisClient.readLine();
 
System.out.println("phrase depuis client:"+ phraseClient);
phraseMajuscule = phraseClient.toUpperCase() + '\n';  
System.out.println("phrase vers client (après modification):"+phraseMajuscule );
 
//Ecrire au client
sortieVersClient.writeBytes(phraseMajuscule);
} // fin boucle (repartir et attendre une nouvelle connexion)
}}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème application client/server, envoie et reception de bytes

 

Sujets relatifs
probleme en c[Java] Probleme de cast
problème surcharge opérateur application du system de cryptage XOR en c
[SQL Server 2005]Caractère unicode non sauvé dans la DB après 1 insert[SQL] SQL Server 2000 & la différence (not exists)
[Résolu] Petit problème avec "rand"probleme liste deroulante Php / HTML
Petit probleme javascriptJavascript + probleme lors du chargement d'une page
Plus de sujets relatifs à : Problème application client/server, envoie et reception de bytes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR