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 :
import java.net.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.lang.reflect.*;
publicclass FTPRequest {
protected Socket dataSocket = null;
protected BufferedReader inFromClient;
protected DataOutputStream outToClient;
private Socket sock;
/** Répertoire racine. */
protected File root;
/** Répertoire de travail. */
protected File wdir;
/** Nom du client. */
protected String user = null;
/** Vrai si le client est authentifié. */
protected boolean login = false;
/** Connexion terminée. */
protected boolean closed = false;
public FTPRequest(Socket sock) throws Exception {
this.sock=sock;
inFromClient = new BufferedReader(new InputStreamReader(this.sock.getInputStream()));
outToClient = new DataOutputStream(this.sock.getOutputStream());
outToClient.writeBytes("220 localhost FTP server ready."+'\n');
this.processRequest();
}
privatevoid processRequest() throws Exception {
String line = null;
while ((line = inFromClient.readLine()) != null)
{
String request;
String reste;
int index = line.indexOf(' ');
System.out.println("coincoincoin" );
if (index!=-1) {
request = line.substring(0,index);
reste = line.substring(index+1);
} else {
request = line;
reste = "";
}
outToClient.writeBytes("on test le tout et on recommence22"+'\n');
System.out.println("coin" );
request = request.toUpperCase();
System.out.println("requete = "+request);
System.out.println("reste = "+reste);
outToClient.writeBytes("on test le tout et on recommence"+'\n');
if(request =="USER" ){
System.out.println("on passe dans user" );
if(reste!="" )
processUSER(reste);
}
else
outToClient.writeBytes("503 Utilisation USER [nom d'utilisateur]."+'\n');
if(request =="PASS" )
if(reste!="" )
processPASS(reste);
else
outToClient.writeBytes("503 Utilisation PASS [mot de passe].\n" );
Marsh Posté le 01-10-2005 à 20:12:39
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:
Message édité par nodus le 02-10-2005 à 15:07:48