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
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
●
2
16= 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é = 2
10à 1500 octets.
Thème 4 Programmation
Plan:
●
4.1 Généralités
➔
4.2 UDP
●
4.3 TCP
UDP (1)
●
Modèle fig. 2.35 Kurose p. 173
UDP (2)
●
Application fig. 2.34 Kurose p. 172
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();
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();
}}
UDP (4)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception{
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();
UDP (6)
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
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();
}}
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];
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();
UDP (10)
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
} } }
Thème 4 Programmation
Plan:
●
4.1 Généralités
●
4.2 UDP
➔
4.3 TCP
TCP (1)
●
Modèle fig. 2.31 Kurose p. 162
TCP (2)
●
Application fig. 2.32 Kurose p. 163
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);
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
TCP (4)
while ((sentence = inFromUser.readLine()) != null) {
Socket clientSocket = new Socket("hostname", 6789);
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);
TCP (6)
clientSocket.close();
}
} // end main } // end class
TCP (7)
●
Stream fig. 2.33 Kurose p. 165
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");
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();
TCP (10)
System.out.println("Client sent: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
connectionSocket.close();
}
} // end main } // end class