|
Voici un serveur qui met à disposition des fichiers pour un client.
package server;
import java.net.*;
import java.io.*;
import java.lang.Integer;
public class MonServeur {
public static void main(String[] args) throws IOException {
ServerSocket maSocket = null;
BufferedReader in = null;
PrintWriter out = null;
OutputStream fOut = null;
int port = 80;
if (args.length != 1) {
System.out
.println("\nSyntaxe : MonServeur Port\nValeur par defaut : 80");
} else {
port = Integer.parseInt(args[0]);
}
try {
maSocket = new ServerSocket(port);
} catch (IOException e) {
System.err.println("Impossible d’ecouter sur le port " + port);
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = maSocket.accept();
} catch (IOException e) {
System.err.println("Connexion refusee.");
System.exit(1);
}
try {
out = new PrintWriter(clientSocket.getOutputStream(), true);
fOut = clientSocket.getOutputStream();
} catch (IOException e) {
System.err.println("Erreur de fermeture du flux d’ envoi.");
}
try {
in = new BufferedReader(new InputStreamReader(clientSocket
.getInputStream()));
} catch (IOException e) {
System.err.println("Erreur de fermeture du flux de reception.");
}
// Traitement de la demande
String inputLine, outputLine;
FileInputStream fIn;
byte[] fBuffer = new byte[1024];
int fRead = 0;
try {
while ((inputLine = in.readLine()) != null) {
// Envoi du fichier
File fAsked = new File("./" + inputLine);
if (fAsked.exists()) {
fIn = new FileInputStream(inputLine);
while ((fRead = fIn.read(fBuffer)) > 0) {
fOut.write(fBuffer, 0, fRead);
}
// Fermeture fichier
fOut.close();
}
// Pas de fichier ...
else {
out.println("no file : " + inputLine);
}
}
} catch (IOException e) {
System.err.println("Erreur de lecture flux de reception.");
}
System.out.print("\nFermeture Client");
try {
out.close();
in.close();
clientSocket.close();
maSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
|