Vous êtes sur la page 1sur 27

IFT 585 Télématique

Thème 4

Programmation avec
la couche transport
Thème 4 Programmation
Plan:
➔ 4.1 Généralités
● 4.2 UDP
● 4.3 TCP

©Luc Bergevin; tous droits réservés


Généralités
● L'entête du paquet UDP comporte un champ longueur qui indique la
longueur du paquet
● Ce champ possède 16 bits

216 = 65535 octets = maximum acceptable par la couche réseau
● Des octets sont nécesaires pour l'entête et le routage >>> 65515 octets est
un maximum strict de données.
● Le protocole Ethernet de la couche physique possède une limite de 1500
octets >>> maximum recommandé = 210 à 1500 octets.

● Site essentiel pour la programmation


http://java.sun.com/j2se/1.4.2/docs/api/

©Luc Bergevin; tous droits réservés


Thème 4 Programmation
Plan:
● 4.1 Généralités
➔ 4.2 UDP
● 4.3 TCP

©Luc Bergevin; tous droits réservés


UDP (1)
● Modèle fig. 2.35 Kurose p. 173

©Luc Bergevin; tous droits réservés


UDP (2)
● Application fig. 2.34 Kurose p. 172

©Luc Bergevin; tous droits réservés


UDP (3)
import java.io.*;

import java.net.*;

class UDPClient {

public static void main(String args[]) throws Exception{

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("localhost");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

©Luc Bergevin; tous droits réservés


UDP (3)
sendData = sentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}}

©Luc Bergevin; tous droits réservés


UDP (4)
import java.io.*;

import java.net.*;

class UDPClient {

public static void main(String args[]) throws Exception{

©Luc Bergevin; tous droits réservés


UDP (5)
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("localhost");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

©Luc Bergevin; tous droits réservés


UDP (6)
sendData = sentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

©Luc Bergevin; tous droits réservés


UDP (7)
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}}

©Luc Bergevin; tous droits réservés


UDP (8)
import java.io.*;

import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new
DatagramSocket(9876);

byte[] receiveData = new byte[1024];


byte[] sendData = new byte[1024];

©Luc Bergevin; tous droits réservés


UDP (9)
while(true) {

DatagramPacket receivePacket = new DatagramPacket(receiveData,


receiveData.length);

serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();


int port = receivePacket.getPort();

©Luc Bergevin; tous droits réservés


UDP (10)
String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,


port);

serverSocket.send(sendPacket);

©Luc Bergevin; tous droits réservés


Thème 4 Programmation
Plan:
● 4.1 Généralités
● 4.2 UDP
➔ 4.3 TCP

©Luc Bergevin; tous droits réservés


TCP (1)
● Modèle fig. 2.31 Kurose p. 162

©Luc Bergevin; tous droits réservés


TCP (2)
● Application fig. 2.32 Kurose p. 163

©Luc Bergevin; tous droits réservés


TCP (3)
import java.io.*;

import java.net.*;

class TCPClient {

public static void main(String argv[]) throws Exception {


String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client ready for input");
while ((sentence = inFromUser.readLine()) != null) {
Socket clientSocket = new Socket("hostname", 6789);

©Luc Bergevin; tous droits réservés


TCP (3)
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
} // end main
} // end class

©Luc Bergevin; tous droits réservés


TCP (4)
while ((sentence = inFromUser.readLine()) != null) {
Socket clientSocket = new Socket("hostname", 6789);

©Luc Bergevin; tous droits réservés


TCP (5)
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

outToServer.writeBytes(sentence + '\n');

BufferedReader inFromServer = new BufferedReader(new


InputStreamReader(clientSocket.getInputStream()));

modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);

©Luc Bergevin; tous droits réservés


TCP (6)

clientSocket.close();
}
} // end main
} // end class

©Luc Bergevin; tous droits réservés


TCP (7)
● Stream fig. 2.33 Kurose p. 165

©Luc Bergevin; tous droits réservés


TCP (8)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
System.out.println("Server Ready for Connection");

©Luc Bergevin; tous droits réservés


TCP (9)

while(true) {
Socket connectionSocket = welcomeSocket.accept();

System.out.println("Client Made Connection");

BufferedReader inFromClient = new BufferedReader(new


InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new
DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();

©Luc Bergevin; tous droits réservés


TCP (10)

System.out.println("Client sent: " + clientSentence);


capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
connectionSocket.close();
}
} // end main
} // end class

©Luc Bergevin; tous droits réservés

Vous aimerez peut-être aussi