Bonsoir,
Voila j'ai un soucis au niveau de mon programme que je dois rendre ce soir avant minuit. C'est la conception d'un serveur et client tftp. J'ai réaliser le client et le serveur dont l'ecriture(upload) et la lecture(download) sont bien implementé dans le programme. Mais j'ai un tres gros probleme au niveau de l'amélioration du programme qui consiste à ce que plusieur client puisse se connecter au serveur et effectuer des taches simultanément.
J'ai tout d'abord reussi a faire en sorte:
lorsqu'un client se connect au serveur et qui commence a download
et qu'au meme moment un autre client se connect au serveur et fais une demande de download. Le premier client commence a downloader pendant que le deuxieme client attend jusqu'a un temps (timeout). Lorsque le premier client a terminé de downloader, si le timeout ne c'est pas écoulé le deuxieme client peut downloader.
Mais tout cela ne se fait pas simultanément et tout depend du timeout.
J'aimerai savoir si quelqu'un pouvait m'aider pour implementer ceci.
Je vous en remercie d'avance. Voici les morceaux de code :
[QUOTE]
public static void main(String[] args) throws Exception {
if (args.length!=1) {
System.err.println("Usage: java TFTPServeur "
+"port");
return;
}
TFTPServeur server;
// Création du serveur
if (args.length > 0 )
{
server = new TFTPServeur(Integer.parseInt(args[0]));
}
else{ server = new TFTPServeur();}
// Démarrage du serveur.
server.run();
}
[/QUOTE]
[QUOTE]
public TFTPServeur() throws SocketException {
this(TFTP_PORT);
}
[/QUOTE]
[QUOTE]
public TFTPServeur(int port) throws SocketException {
socket = new DatagramSocket(port);
buffer = new byte [BLOCK_SIZE+HEADER_SIZE];
bufferAck = new byte [HEADER_SIZE];
datagram = new DatagramPacket(buffer,0,buffer.length);
}
[/QUOTE]
[QUOTE]
public void run() {
System.err.println("Port TFTP du serveur : "+ socket.getLocalPort());
try {
while(true) {
try {
// Atttente de requête
datagram.setData(buffer,0,buffer.length);
socket.receive(datagram);
// Pseudo-connexion dès la réception d'une requête
socket.connect(datagram.getAddress(), datagram.getPort());
// Traitement de la requête du datagramme reçu
LecturePaquet(datagram);
} catch (TFTPException e) {
System.err.println("Transfert interrompu");
} finally {
// Que le transfert ait été interrompu ou effectué avec
// succès non on réinitialise le délai d'attente de la socket
// à un temps illimité et on termine la pseudo-connection
socket.setSoTimeout(0);
socket.disconnect();
}
}
} catch (IOException e) {
System.err.println("Problème d'entrée/sortie sur la socket locale");
return;
}
}
[/QUOTE]
Cordialement
Spawnrad