OVH Cloud OVH Cloud

[Debutant] Sockets en java

7 réponses
Avatar
Ariane
Bonjour à tous
Je suis débutante en java et j'aimerais apprendre à manier les sockets en
realisant un petit client/serveur FTP. Auriez-vous un lien interessant
(tutorial ou code source simple/commenté) ?
Merci

7 réponses

Avatar
garphy
si tu débute en prog socket, ce n'est pas par ftp qu'il faut commencer, à
mon avis, car c'est un protocole un peu chargé

essaye déja de faire un petit client qui se connecte à des trucs plus
simple genre daytime, chargen ou autres

si ça t'interresse je peux t'envoyer du code mais bon, faut s'impregner de
javadoc, c'est la voie royale :)

garphy

Le Tue, 30 Sep 2003 12:22:43 +0200, Ariane a écrit :

Bonjour à tous
Je suis débutante en java et j'aimerais apprendre à manier les sockets en
realisant un petit client/serveur FTP. Auriez-vous un lien interessant
(tutorial ou code source simple/commenté) ?
Merci


Avatar
Ariane
Ben je me doute que FTP c pas seulement les sockets, mais c'est vraiment ca
que je veux faire, quitte à y passer du temps. Tout morceau de code est le
bienvenu...
Ariane
"garphy" skrev i melding
news:
si tu débute en prog socket, ce n'est pas par ftp qu'il faut commencer, à
mon avis, car c'est un protocole un peu chargé

essaye déja de faire un petit client qui se connecte à des trucs plus
simple genre daytime, chargen ou autres

si ça t'interresse je peux t'envoyer du code mais bon, faut s'impregner de
javadoc, c'est la voie royale :)

garphy


Bonjour à tous
Je suis débutante en java et j'aimerais apprendre à manier les sockets
en


realisant un petit client/serveur FTP. Auriez-vous un lien interessant
(tutorial ou code source simple/commenté) ?
Merci





Avatar
Frédéric Minne
Ariane wrote:
Bonjour à tous


Salut,

Je suis débutante en java et j'aimerais apprendre à manier les sockets en
realisant un petit client/serveur FTP. Auriez-vous un lien interessant
(tutorial ou code source simple/commenté) ?


A mon avis, l'implémentation du protocole ftp est un peu complexe pour
débuter (la définition complète du protocol ftp peut-être trouvée à
l'adresse http://www.faqs.org/rfcs/rfc959.html, attention, c'est très
technique).

Commence plutôt par quelques exemples simples utilisant les sockets. Une
petite recherche sur Google pourrait t'aider. Voici quelques liens que
j'ai trouvés et qui ont l'air intéressants (tous en anglais) :

http://java.sun.com/docs/books/tutorial/networking/sockets/
http://www.ccs.neu.edu/home/kenb/1335/socket_tut.html
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html

Il y a aussi le très bon livre "Programmation réseau en Java" de
Elliotte Rusty Harold chez O'Reilly.
Le dernier hors-série du magazine Login (consacré à la programmation en
Java) contient quelques exemple de programmation réseau en Java.

Sinon, tu peux aussi consulter la javadoc.

Merci




Mais de rien et bonne chance...

Et surtout n'hésite pas à demander de l'aide sur le newsgroup.

---- Fred

Avatar
Frédéric Minne
Re-Salut,

Pour l'implementation de FTP en Java, je n'ai pas trouvé grand chose...

L'article suivant a l'air pas mal et contient de nombreux liens
intéressants :

http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp_p.html

Sinon, tu peux aussi faire une recherche dans les projets sur
sourceforge.net, j'ai trouvé quelques projets qui pourraient t'aider :

- clients ftp :
http://sourceforge.net/projects/finj/
http://sourceforge.net/projects/gftp/

- serveurs ftp :
http://sourceforge.net/projects/jasftpd/

- bibliothèques de classes implémentant ftp :
http://sourceforge.net/projects/javanioftp/

Pour la définition du protocol FTP, il y a d'autres documents
intéressant sur http://www.ietf.org :

- protocole FTP proprement dit :
RFC765 http://www.ietf.org/rfc/rfc0765.txt?numberv5
RFC959 http://www.ietf.org/rfc/rfc0959.txt?number•9

- extensions :
RFC2228 http://www.ietf.org/rfc/rfc2228.txt?number"28
RFC2640 http://www.ietf.org/rfc/rfc2640.txt?number&40

Voilà, j'espère que ça pourra t'aider,

--- Fred
Avatar
jeff
/**
Boite de dialogue envoi de mail avec socket
s'utilise comme une application ou une applet

*/

//
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
//---
import java.applet.*;
public class apEmail extends Applet
{
TextField tmailfrom,tmailto,tsubject,tsmtp;
TextArea tmessage;
Panel p;
boolean isStandalone = false;
Socket echoSocket ;
String smailfrom = "";
String smailto = "";
String sSmtp = "smtp.cegid.fr";
String smessage = "Message1";
String ssubject = "Sujet";
Label lmessage,lmailfrom,lmailto,lsubject,lsmtp ;
//------------------------------------
//-----------------------------
public void Envoi() throws Exception{
PrintWriter out ;
BufferedReader in ;
sSmtp=tsmtp.getText();
echoSocket = new Socket(sSmtp, 25);
out = new PrintWriter(echoSocket.getOutputStream(),
true);
in = new BufferedReader(new InputStreamReader(

echoSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(
new
InputStreamReader(System.in));
smailfrom=tmailfrom.getText();
out.println("mail from:"+smailfrom);
smailto=tmailfrom.getText();
out.println("rcpt to:"+smailto);
out.println("Subject: "+ssubject);
smessage= tmessage.getText();
out.println(smessage);
out.println("Data Message ");out.println("Data Message
");
out.println("Message1 ");
out.println("Message2 ");
out.println(".");
out.println(".");
out.close();
in.close();
stdIn.close();
echoSocket.close();
} //envoi
//---------------------
public void init()
{


Button Quitter = new Button("Quitter");
Button Envoi = new Button("Envoi");
//-------------------
Quitter.addActionListener(
new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
System.out.println(e.getSource() );
System.exit(0);
}
});//
//---------------------
setSize(600,600);
lmailfrom = new Label("From", Label.CENTER);
lmailto = new Label("to", Label.CENTER);
lsubject = new Label("Sujet", Label.CENTER);
lsmtp = new Label("Smtp", Label.CENTER);
tmailfrom=new TextField(); tmailfrom.setText(smailfrom);
tmailto=new TextField(); tmailto.setText(smailto);
tsubject=new TextField(); tsubject.setText("Sujet");
tsmtp=new TextField(); tsmtp.setText(sSmtp);

//-----------------------
p =new Panel();////
p.setLayout(new GridBagLayout()); ////
GridBagConstraints c=new GridBagConstraints(); //--
c.gridx=0;c.gridy =0; c.gridheight=1; c.gridwidth=1;
c.fill=GridBagConstraints.HORIZONTAL; c.weightx=1.0; c.weighty=1.0;
c.insets=new Insets(5,5,5,5);
//-
c.gridy=1;c.gridx =1; p.add(lmailto,c);
c.gridy=2;c.gridx =1; p.add(lmailfrom,c);
c.gridy=1;c.gridx =2; p.add(tmailto,c);
c.gridy=2;c.gridx =2; p.add(tmailfrom,c);

c.gridy=3;c.gridx =1; p.add(lsmtp,c);
c.gridy=3;c.gridx =2; p.add(tsmtp,c);

c.gridy=4;c.gridx =1; p.add(lsubject,c);
c.gridy=4;c.gridx =2; p.add(tsubject,c);
//----------
//-----------
lmessage = new Label("Message", Label.CENTER);
c.gridy=5;c.gridx =1; p.add(lmessage,c);
tmessage= new TextArea("message",6,40);
c.gridy=5;c.gridx =2; p.add(tmessage,c);
//--------------------------
c.gridy=6;c.gridx =2; p.add(Envoi,c);
c.gridy=7;c.gridx =2; p.add(Quitter,c);
add(p,BorderLayout.CENTER);////


// Rendre la fenêtre visible (affichage)
setVisible(true);

//-----------------------------
Envoi.addActionListener(
new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
try { Envoi(); }
catch (Exception e2)
{ e2.printStackTrace();}

//-------------

}
}
);
//-------------------
} // constructeur email()
//---------------------------------------
//
public static void main( String[] args )
{ // méthode mixte pour appli
Frame f = new Frame();//Création d'une " Frame " java !
f.setSize( 600, 600 );
//Création d'un objet du type Applet
apEmail ma = new apEmail();
ma.init();
//On ajoute l'objet du type Applet dans la " Frame ".
f.add( ma );
f.setVisible( true );
f. setTitle("Appli/Applet java");
f.pack();
f.addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//-------------------------------------------------------
} //class
Avatar
François Cheippe
Je doute que cet exemple fonctionne correctement, car toute connexion avec
un serveur SMTP doit déjà débuter par une commande "HELO <nom de
domaine>"...

Pour plus d'informations, voir RFC 821.

--
François Cheippe

Avatar
Erwan David
"François Cheippe" écrivait :

Je doute que cet exemple fonctionne correctement, car toute connexion avec
un serveur SMTP doit déjà débuter par une commande "HELO <nom de
domaine>"...

Pour plus d'informations, voir RFC 821.


Ou EHLO <nom de machine>
cf RFC 2821 qui a remplacé la 821.