Socket
fournit tous les outils nécessaires à
cela. Une fois qu'une connexion est réalisée avec une autre machine,
on a accès à un flux d'entrée et un flux de sortie, comme si l'on
travaillait avec un fichier.
import java.io.*;
import java.net.*;
public class jnetcat {
public static void main(String args[]) {
if (args.length != 2)
System.out.println("usage : jnetcat hote port");
else {
Socket sk = null;
try {
sk = new Socket(args[0],Integer.valueOf(args[1]).intValue());
DataInputStream is = new DataInputStream(sk.getInputStream());
String ligne;
while ((ligne = is.readLine()) != null)
System.out.println(ligne);
} catch (UnknownHostException e) {
System.out.println("hote inconnu : "+e.getMessage());
} catch (IOException e) {
System.out.println("erreur entree/sortie : "+e.getMessage());
}
}
}
}
Cette application se connecte sur la machine et le port spécifiés
sur la ligne de commande. Elle lit ensuite toutes les données, et
les affiche à l'écran. On peut par exemple exécuter :
java jnetcat eig6.unige.ch 13
Thu May 30 11:23:19 1996
Le port 13 donne l'heure, on parle du généralement du port
daytime.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl
&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm
'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn
Le port 19 est le port générateur de caractères, chargen,
il envoie des lignes de caractères tant que le client est connecté.
Pour arrêter le client, on doit presser contrôle-C
.