sockets - Thomas Robert

Transcription

sockets - Thomas Robert
SOCKETS
InfoRep – TDM1
I. Sockets en C
1. Création du socket
Création du socket
Défini adresse et port local (côté serveur)
2. Envoi du message en UDP
Envoi de message
Reception de message
3. Envoi de message en TCP
Connexion client au serveur
Ecoute les connexion serveur
Accepte une connexion serveur
Lit un message
Envoie un message
Ferme la connexion
4. Schéma des appels de fonctions
UDP
Serveur
TCP
Serveur
Client
socket()
socket()
bind()
bind()
socket()
socket()
listen()
recvfrom()
bloquant
Client
sendto()
bloquant
connect()
accept()
bloquant
read() / write()
write() / read()
close()
close()
recvfrom()
sendto()
bloquant
II. Sockets en Java
1. Arbre de classes du package java.net
Object
InetAddress
Inet4Address
SocketAddress
Socket
ServerSocket
DatagramSocket
DatagramPacket
InetSocketAdress
Inet6Address
Thomas
ROBERT
1
v1
SOCKETS
InfoRep – TDM1
2. InetAdress



static InetAddress
static InetAddress
static InetAddress[]
getLocalHost()
getByName(String host)
getAllByName(String host)
3. Socket : connexion TCP active entre un client et un serveur









InetAddress
InetAddress
int
int
InputStream
OutputStream
void
Socket(String host, int port)
Socket(InetAddress address, int port)
getInetAddress()
getLocalAddress()
getPort()
getLocalPort()
getInputStream()
getOutputStream()
close()
// connexion
// connexion
// adresse IP distante
// adresse IP locale
// port distant
// port local
4. SocketServer : ouverture d’un port côté serveur en attente de client


Socket
ServerSocket(int port, int nbClientMax, InetAddress adresse)
accept()
// récupérer le socket de communication avec client
5. DatagramSocket : socket de communication sans connexion









void
InetAddress
int
InetAddress
int
void
void
DatagramSocket()
DatagramSocket(int port)
close()
getInetAddress()
getPort()
getLocalAddress()
getLocalPort()
send(DatagramPacket p)
receive(DatagramPacket p)
6. DatagramPaacket : packet sans connexion à envoyer ou à recevoir










InetAddress
byte[]
int
int
void
void
void
void
DatagramPacket(byte[] buf, int length) // packet reçu
DatagramPacket(byte[] buf, int length, InetAddress addr, int port) // envoyé
getAddress()
getData()
getLength()
getPort()
setAddress(InetAddress iaddr)
setData(byte[] buf)
setLength(int length)
setPort(int iport)
III. Fonctions utiles en C
sscanf(calcul,"%d%c%d", &e1, &operation, &e2); // scan de la chaine “calcul” pour en extraire infos.
sprintf(message, "%d", resultat); // écriture dans une chaine
Thomas
ROBERT
2
v1