Partie III : Sockets TCP (6 pts)
1. Pour communiquer une chaîne de caractères entre un client et un serveur en utilisant les sockets
TCP, le client peut utiliser la méthode println de PrintWriter et le serveur peut utiliser la méthode
readLine() de BufferedReader. Donnez deux manières différentes pour réaliser le même
traitement (en utilisant d’autres flots ou d’autres méthodes) (2 pts)
2. Que fait la méthode mystere de la classe java suivante ? (1 pt).
import java.io.*;
public class A
{
public static void mystere (InputStream in, OutputStream out) throws IOException {
byte buf[] = new byte[1024]; int n;
while((n=in.read(buf))!=-1) out.write(buf,0,n); in.close(); out.close();
}
}
3. Soit les deux classes java suivantes :
//// Serveur.java
import java.io.*;
import java.net.*;
public class Serveur
{
public static void main(String []args) throws IOException
{
Socket sock = new ServerSocket(9001).accept();
A.mystere(sock.getInputStream(),new FileOutputStream("./src/test2"));
sock.close();
}
}
/////////// Client.java
import java.io.*;
import java.net.*;
public class Client
{
public static void main(String []args) throws IOException
{
Socket sock = new Socket(InetAddress.getLocalHost(),9001);
A.mystere(new FileInputStream("./src/test1"),sock.getOutputStream());
sock.close();
}
} a. Que fait le client ? (0,5 pt).
b. Que fait le serveur ? (0,5 pt).
c. Que fait cette application en exécutant les deux classes dans localhost ? (1pt)
d. En utilisant deux machines différentes (une machine coté client et une autre machine
coté serveur), quel sera l’objectif de cette application ? (1pt)