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 :

Image via Socket : C++ et Java


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Par défaut Image via Socket : C++ et Java
    Hello.

    Je dois transmettre une image d'un prog en C++ vers un prog en Java.
    Du coup j'essaie de faire ça par sockets, et je rencontre des soucis...

    Rien que Java vers Java je ne m'en sors pas :
    Je pense que je dois passer l'image en tableau de bytes et récupérer ce tableau pour le reconvertir en image.

    J'ai essayé pas mal de trucs, en fouillant sur internet, et soit je chope une erreur de lecture du tableau récupéré à la lecture, soit "PNG header invalid" ou un truc du genre...

    Je suis à l'écoute de tout renseignement : )

    Merci.


    edit:
    En essayant avec ceci : http://www.developpez.net/forums/d10...sfert-fichier/

    -> Exception in thread "main" java.net.SocketException: Connection reset by peer: socket write error

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Par défaut
    pour être plus précis :

    le serveur reçoit un message de la part du client, et selon ce message doit lui renvoyer l'image correspondante

    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
    		ServerSocket servsocket = new ServerSocket(port); 
    		while (true) {
    			Socket client = servsocket.accept();
    			System.out.println("connection accepted");
     
     
    			BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
     
     
    			BufferedOutputStream output = new BufferedOutputStream(client.getOutputStream());
     
     
     
    			while (true) {
    				String str = reader.readLine();          // lecture du message
    				if (str.equals("NO_IMG")){
    					System.out.println("ECHO = " + str);
    					System.out.println("fermeture");
    					break;
    				}
    				System.out.println("ECHO = " + str);   // trace locale
     
     
    				//renvoi de l'image
    				File imageFile = new File("src/server/testImageSequence/imageSequence"+str+".jpeg");
    				System.out.println("try to send "+imageFile.getAbsolutePath());
    				FileInputStream fis = new FileInputStream(imageFile);
    				ByteArrayOutputStream bos = new ByteArrayOutputStream();
    				byte[] buf = new byte[1024];
    				for (int readNum; (readNum = fis.read(buf)) != -1;) {
    					bos.write(buf, 0, readNum); //no doubt here is 0
    					//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
    					System.out.println("read " + readNum + " bytes,");
    				}
    				byte[] bytes = bos.toByteArray();
    				output.write(bytes);
    				output.flush();
    				fis.close();
    			}
    			output.close();
    			reader.close();
    			client.close();
     
    		}

    Le client envoie le message demandant l'image, et essaie de récupérer l'image en question, mais là je coince...

    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
    private void sendMessage() throws IOException {
    		System.out.println("---sending---");
    		String mess = buildMessage();
    		imgNumber++;
     
    		//envoi du message au serveur
    		printWriter.println(mess);
     
    		// lecture de la réponse du serveur
     
    		//TODO...
     
     
     
    	}
     
    	private String buildMessage(){
    		String mess;
    		if(imgNumber <10)mess = "000"+imgNumber;
    		else mess = "00"+imgNumber;
    		return mess;
     
    	}


    La communication en mode texte passe parfaitement (avec un bufferedreader.readline() ) mais je ne vois pas comment communiquer des tableaux de bytes pour reconstituer l'image côté client...

    Merci.

Discussions similaires

  1. Envoyer une image via socket
    Par antasalam dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 19/06/2014, 15h05
  2. Réponses: 3
    Dernier message: 21/04/2012, 11h35
  3. Réponses: 0
    Dernier message: 20/04/2012, 16h35
  4. [NIO] envoie d'image à plusieurs client via socket
    Par robert_trudel dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/10/2006, 23h11
  5. Connexion via Socket JAVA
    Par jihene dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2006, 18h50

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