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