Client serveur

dushit Messages postés 44 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 août 2006 - 27 févr. 2006 à 20:30
dushit Messages postés 44 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 août 2006 - 5 mars 2006 à 20:13
bonjour,
dans le but de mon projet je doit recuperer une photo sur un pc en passer par internet.
je doit passer par une socket ou par la classe ftp??
Merci de votre aide
dushit

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 févr. 2006 à 23:07
Par une socket, si c'est tout ce que tu veux savoir
0
dushit Messages postés 44 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 août 2006
28 févr. 2006 à 18:54
en clien jai fai ca:

/*
* Client.java
*
* Created on 28 février 2006, 18:16
*/
import java.net.*;
/**
*
* @author yvern
*/
public class Client extends javax.swing.JFrame {

/** Creates new form Client */
public Client() {
initComponents();
this.labPort.setText("" +ServeurImage.PORT);


}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
btnConnexion = new javax.swing.JButton();
labPort = new javax.swing.JLabel();
labNom = new javax.swing.JLabel();

getContentPane().setLayout(null);

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
btnConnexion.setText("Connexion");
btnConnexion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnConnexionActionPerformed(evt);
}
});

getContentPane().add(btnConnexion);
btnConnexion.setBounds(20, 220, 120, 23);

getContentPane().add(labPort);
labPort.setBounds(220, 20, 70, 20);

labNom.setText("Connexion sur le port numero :");
getContentPane().add(labNom);
labNom.setBounds(10, 20, 190, 20);
labNom.getAccessibleContext().setAccessibleName("");

java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400, 300);
}
// </editor-fold>//GEN-END:initComponents

private void btnConnexionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConnexionActionPerformed
try{
//creation de la socket pour se connecter au serveur
Socket s = new Socket("localhost",ServeurImage.PORT);
System.out.println("Socket cree");
//creation des flots pour lire et ecrire sur la socket

}
catch(Exception e){
System.out.println("Erreur" +e);
}

}//GEN-LAST:event_btnConnexionActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Client().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnConnexion;
private javax.swing.JLabel labNom;
private javax.swing.JLabel labPort;
// End of variables declaration//GEN-END:variables

}
et en serveur:
/*
* ServeurImage.java
*
* Created on 28 février 2006, 17:40
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
import java.net.*;
import java.io.*;
import java.util.*;

/**
*
* @author yvern
*/
public class ServeurImage {

public static final int PORT = 5600;

/** Creates a new instance of ServeurImage */
public ServeurImage() {
try{
File fichier = new File("G:\\TECH\\image.jpg");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fichier));

}
catch(Exception e){
System.out.println("Erreur" + e);
System.exit(0);
}
}
public void go(){
try{
ServerSocket serveur = new ServerSocket(PORT);
System.out.println("Serveur en service sur le port" + PORT);
while(true){
Socket connexion = serveur.accept();
System.out.println("Connexion accepte");
}
}
catch(Exception e){
System.out.println("Erreur" + e);
System.exit(0);
}
}
public static void main(String[] args){
new ServeurImage().go();
}

}
Merci de maider car je sai plu quoi faire
pour la creation des flux pour lire et ecrire ds la socket
Merci
dushit
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
1 mars 2006 à 12:40
Salut,

pour écrire en version brute:
socket = serverSocket.accept();
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
String s="bonjour";
out.write(s.getBytes(), 0, s.length);

pour lire :
Socket s = new Socket("localhost",ServeurImage.PORT);
BufferedInputStream in=s.getInputStream();
byte[] buffer=new byte[4096];
//nombre de caractères lus
int nb=0;
while((nb=in.read(buffer,0, buffer.length))!=-1){
String s=new String(buffer, 0 , nb);
System.out.println(s);
}

Après à toi d'adapter pour la lecture de ton image et la sauvegarde sur le disque dur.
Vu qu'on utilise des bytes, tu peux manipuler des données binaires comme une image aussi bien que des chaines de caractères
0
dushit Messages postés 44 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 août 2006
1 mars 2006 à 22:10
socket = serverSocket.accept();
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
String s="bonjour";
out.write(s.getBytes(), 0, s.length);

> je le met dans le 2eme try??
pour limage je fai comment pour lenvoyer car ya pa de fonction getbyte pour le fichier declare avant

File fichier = new File("G:\\TECH\\image.jpg");
BufferedInputStream bis new BufferedInputStream(new FileInputStream(fichier));
> est ce que je doi faire ca dans le 1er try??
desole mais je sui pa tres doue en java!!

sinon jai une erruer de type avec :
BufferedInputStream in=s.getInputStream();

Merci d'avance
dushit
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
2 mars 2006 à 10:38
Alors pour l'envoi du fichier :

Socket socket = serverSocket.accept();
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("image.jpg"));

byte[] buffer = new byte[4096];
int nb = 0;
while ((nb = bufferedInputStream.read(buffer)) != -1) {
out.write(buffer, 0, nb);
}

bufferedInputStream.close();
out.close();

Pour la lecture et l'enregistrement de l'image :

Socket s = new Socket("localhost", ServeurImage.PORT);
BufferedInputStream in = new BufferedInputStream(s.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("monImage.jpg"));
byte[] buffer = new byte[4096];
// nombre de caractères lus
int nb = 0;
while ((nb = in.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, nb);
}

in.close();
out.close();
0
dushit Messages postés 44 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 août 2006
5 mars 2006 à 20:13
salut,
merci ca marche nikel mais en local host, jai tester depui 2 pc sur le net en mettant l'ip du pc ou tournait le serveur mais ca marche pa .
ya t'il quelque chose de speciale a faire??
Merci
dushit
0
Rejoignez-nous