IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Envoi de fichier bit par bit


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut Envoi de fichier bit par bit
    Bonsoir à vous,

    J'ai un code serveur qui permet d'envoyer un fichier vidéo mais j'aimerais que ce fichier s'envoi bit par bit (50 bits par 50 bits chaque seconde par exemple) et donc que le client reçoit aussi le fichier de la même façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    	import java.io.BufferedInputStream;
    	import java.io.File;
    	import java.io.FileInputStream;
    	import java.io.IOException;
    	import java.io.OutputStream;
    	import java.net.ServerSocket;
    	import java.net.Socket;
     
    	public class ServeurEssai {
    		public final static int SOCKET_PORT = 13267;  // 
    		public final static String FILE_TO_SEND = "fichier.avi";    
     
    		public static void main (String [] args ) throws IOException {
    		FileInputStream fis = null;
    		BufferedInputStream bis = null;
    		OutputStream os = null;
    		ServerSocket servsock = null;
    		Socket sock = null;
    		try {
    		  servsock = new ServerSocket(SOCKET_PORT);
    		  while (true) {
    		    System.out.println("Waiting...");
    		    try {
    		      sock = servsock.accept();
    		      System.out.println("Accepted connection : " + sock);
    		      // send file
    		      File myFile = new File (FILE_TO_SEND);
    		      byte [] mybytearray  = new byte [(int)myFile.length()];
    		      fis = new FileInputStream(myFile);
    		      bis = new BufferedInputStream(fis);
    		      bis.read(mybytearray,0,mybytearray.length);
    		      os = sock.getOutputStream();
    		  System.out.println("Sending " + FILE_TO_SEND + "(" + mybytearray.length + "bytes)");    
    		      os.write(mybytearray,0,mybytearray.length);
    		      os.flush();
    		      System.out.println("Done.");
    		    }
    		    finally {
    		      if (bis != null) bis.close();
    		      if (os != null) os.close();
    		      if (sock!=null) sock.close();
    		    }
    		  }
    		}
    		finally {
    		  if (servsock != null) servsock.close();
    		  }
    		  }
     
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import java.io.BufferedOutputStream;
     import java.io.FileOutputStream;
     import java.io.IOException;
     import java.io.InputStream;
     import java.net.Socket;
     
     
    public class Client {
     
    	   public final static int SOCKET_PORT = 13267;      
    	   public final static String SERVER = "127.0.0.1";  
    	   public final static String
    	   FILE_TO_RECEIVED = "film.avi";  
     
    	   public final static int FILE_SIZE = 6022386; 
     
    	   public static void main (String [] args ) throws IOException {
    	   int bytesRead;
    	   int current = 0;
    	   FileOutputStream fos = null;
    	   BufferedOutputStream bos = null;
    	   Socket sock = null;
    	   try {
    		  sock = new Socket(SERVER, SOCKET_PORT);
    		  System.out.println("Connecting...");
     
    		  // receive file
    		  byte [] mybytearray  = new byte [FILE_SIZE];
    		  InputStream is = sock.getInputStream();
    		  fos = new FileOutputStream(FILE_TO_RECEIVED);
    		  bos = new BufferedOutputStream(fos);
    		  bytesRead = is.read(mybytearray,0,mybytearray.length);
    		  current = bytesRead;
     
    		 do {
    		     bytesRead =
    		        is.read(mybytearray, current, (mybytearray.length-current));
    		     if(bytesRead >= 0) current += bytesRead;
    		  } while(bytesRead > -1);
     
    		  bos.write(mybytearray, 0 , current);
    		  bos.flush();
    		  System.out.println("File " + FILE_TO_RECEIVED
    		      + " downloaded (" + current + " bytes read)");
    		}
    		finally {
    		  if (fos != null) fos.close();
    		  if (bos != null) bos.close();
    		  if (sock != null) sock.close();
    		 }
    		  }
     
     
    }
    Merci à vous.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    j'aimerais que ce fichier s'envoi bit par bit
    il y a une raison particulière à abandonner les bytes ?
    50 bits par 50 bits chaque seconde par exemple
    ça sera la transmission la plus lente de l'histoire de l'informatique contemporaine ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben la précision d'envoi de données dans des sockets c'est à l'octet près. Et 50 bits n'est pas un nombre rond d'octets, rien n'est prévu dans les systèmes de transmission, même à bas niveau, pour cette granularité. Quand au besoin c'est un peu très très beaucoup bizarre. T'essaie de faire quoi?

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    on pourrait envisager de travailler à l'aide de glissement de bits dans des longs (64 bits),
    puis d'appliquer un ET logique de 50 bits afin de filtrer les 50 bits... ???
    Tout cela ressemble à un travail titanesque de fourmi...

    Je sais que chacun à ses raisons d'inventer des mécanismes spécifiques, cela m'est arrivé aussi.
    Mais je me souviens de la citation d'un modérateur à l'un de mes posts, dont le message était: JAVA est un langage orienté Objet, et que de ce fait, il faut 'penser' Objet.
    J'ai revu à l'époque mon problème, et j'ai trouvé une solution 'Objet' bien plus élégante.
    @ bientôt...

    Salut & @+ sur 3W!

Discussions similaires

  1. Envoi de fichiers excel par e-mail.
    Par Rzita dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/09/2008, 14h20
  2. Copie bit par bit avec dd
    Par adm_windoz dans le forum Debian
    Réponses: 8
    Dernier message: 07/06/2008, 09h52
  3. Envoi de fichier excel par mail automatique
    Par julio02200 dans le forum Excel
    Réponses: 3
    Dernier message: 06/11/2007, 14h31
  4. Manipulation d'un String bit par bit
    Par CyberChouan dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2007, 15h48
  5. Lire bit par bit
    Par The_Undertaker dans le forum C++
    Réponses: 8
    Dernier message: 01/07/2005, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo