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

  FORUM HardWare.fr
  Programmation
  Java

  [java] problème de socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] problème de socket

n°1212609
nodus
Posté le 01-10-2005 à 20:12:39  profilanswer
 

Je suis en train de faire un petit serveur ftp inspiré de celui dans le bouquin sur la prog réseau en java (chez O'Reilly) et je rencontre un pb avec mon prog. C'est du au outToClient.Writebytes(...) dans la méthode processRequest(). Savez vous quel est le problème ??? :??:  
 
PS: les affichages bidons ne sont là qu'à titre de tests.
 
 
la sortie du prog:

$ java Server
---------Démarrage Server---------
 
re
test
pass
bordel
coincoincoin
Exception in thread "main" java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:115)
        at java.io.DataOutputStream.writeBytes(DataOutputStream.java:259)
        at FTPRequest.processRequest(FTPRequest.java:61)
        at FTPRequest.<init>(FTPRequest.java:41)
        at Server.<init>(Server.java:27)
        at Server.main(Server.java:58)


 
le prog:

Code :
  1. import java.net.*;
  2. import java.io.*;
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.lang.reflect.*;
  6. public class FTPRequest {
  7. protected Socket dataSocket = null;
  8. protected BufferedReader inFromClient;
  9. protected DataOutputStream outToClient;
  10. private Socket sock;
  11. /** Répertoire racine. */
  12.   protected File root;
  13.   /** Répertoire de travail. */
  14.   protected File wdir;
  15.   /** Nom du client. */
  16.   protected String user = null;
  17.   /** Vrai si le client est authentifié. */
  18.   protected boolean login = false;
  19. /** Connexion terminée. */
  20.   protected boolean closed = false;
  21. public FTPRequest(Socket sock) throws Exception {
  22.  this.sock=sock;
  23.  inFromClient = new BufferedReader(new InputStreamReader(this.sock.getInputStream()));
  24.  outToClient = new DataOutputStream(this.sock.getOutputStream());
  25.  outToClient.writeBytes("220 localhost FTP server ready."+'\n');
  26.                 this.processRequest();
  27. }
  28. private void processRequest() throws Exception {
  29.  String line = null;
  30.  while ((line = inFromClient.readLine()) != null)
  31.   {
  32.   String request;
  33.     String reste;
  34.     int index = line.indexOf(' ');
  35. System.out.println("coincoincoin" );
  36.     if (index!=-1) {
  37.       request = line.substring(0,index);
  38.       reste = line.substring(index+1);
  39.     } else {
  40.       request = line;
  41.       reste = "";
  42.     }
  43. outToClient.writeBytes("on test le tout et on recommence22"+'\n');
  44. System.out.println("coin" );
  45.     request = request.toUpperCase();
  46.     System.out.println("requete = "+request);
  47. System.out.println("reste = "+reste);
  48. outToClient.writeBytes("on test le tout et on recommence"+'\n');
  49. if(request =="USER" ){
  50.  System.out.println("on passe dans user" );
  51.  if(reste!="" )
  52.   processUSER(reste);
  53. }
  54.  else
  55.   outToClient.writeBytes("503 Utilisation USER [nom d'utilisateur]."+'\n');
  56. if(request =="PASS" )
  57.  if(reste!="" )
  58.   processPASS(reste);
  59.  else
  60.   outToClient.writeBytes("503 Utilisation PASS [mot de passe].\n" );
  61.      
  62. System.out.println("zut" );
  63.   }
  64.  sock.close();
  65.         }
  66. public void processUSER(String line) throws Exception {
  67.  if (!login) {
  68.          user = line;
  69.          outToClient.writeBytes("331 Vous devez donner votre mot de passe, "+ user + ".\n" );
  70.     
  71.       } else {
  72.          outToClient.writeBytes("530 Déjà logé.\n" );
  73.       }
  74. }
  75. public void processPASS (String param) throws IOException {
  76.     if (user==null || login) {
  77.       outToClient.writeBytes("503 Utilisez d'abord USER.\n" );
  78.       return;
  79.     }
  80.     // Vérification du mot de passe
  81.     login = checkPasswd(user,param);
  82.     if (login) {
  83.       outToClient.writeBytes("230 Utilisateur "+ user + " loggué.\r" );
  84.       return;
  85.     }
  86.     user = null;
  87.     outToClient.writeBytes("530 Login incorrect.\r" );
  88.  
  89. }
  90. boolean checkPasswd(String user,String passwd) {
  91.     return true;
  92.   }
  93. }


Message édité par nodus le 02-10-2005 à 15:07:48
mood
Publicité
Posté le 01-10-2005 à 20:12:39  profilanswer
 

n°1212885
nodus
Posté le 02-10-2005 à 15:07:54  profilanswer
 

Personne n'a d'idée ? :hello:

n°1213300
Profil sup​primé
Posté le 03-10-2005 à 09:02:14  answer
 

fais un :

Code :
  1. outToClient.flush()


après chaque appel à la méthode writeXXXX.  
Et dis-nous si ça marche mieux ;-)


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

  [java] problème de socket

 

Sujets relatifs
probleme d'affichage... tout se décalleProblème XML/XSL sous firefox
Algo avec Alg_exec ( Algo de base, mais qui pose probleme...)problème avec directx 9 et visual c++ 6
problème après l'installation de visual studio .NET 2003vignette photos probleme HTML
Probleme avec script de récupération de flux RSSprobleme de String avec javascript
[JAVA] Socket UDP et InputStream, probleme de readProbleme socket en JAVA / C
Plus de sujets relatifs à : [java] problème de socket


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