Programmation réseau sur android
Fanilo Harivelo
Université de la Réunion
Introduction
Différents moyens de communiquer en réseaux Socket Répond à quasiment tous les cas de f gure i Mêmes classes et méthodes qu'en Java Desktop HttpURLConnection Simplif e la mise en place de connexion HTTP vers un serveur Web i Mêmes classes et méthodes qu'en Java Desktop HTTPClient Simplif e le chargement de la ressource d'une URL i Standard sur Android JSONObject Pour la création et la manipulation de données JSON Standard sur Android
Base sur les Sockets
Création d'un objet Socket Socket socket = new Socket("hostname", port); Création d'un output stream pour l'envoi de données PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // Autof ush quand les méthodes l du type println sont appelées Création d'un input stream pour la réception de données BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); Réalisation des entrées/sorties avec les input et output streams Entrée – utiliser les méthodes de BufferedReader : read, readLine, … readLine envoie null (EOF) quand la connexion se ferme Sortie - utiliser les méthodes de PrintWriter : print, println, … Fermeture de la socket socket.close(); Exceptions UnknownHostException Erreur lors de la résolution de l'adresse auprès du serveur de nom IOException Timeout Connexion refusée par le serveur Interruption ou autre erreur
–
La fermeture du serveur ne provoque pas d'erreur à la lecture (readLine)
Démo socket : connexion TCP entre un serveur Java et un client Android
Préparation de la machine Android Créer une machine virtuelle VirtualBox ou VMWare Mémoire de 512 Mo Sans disque dur Interface réseau en Host-only Utiliser l'image ISO d'Android X86 comme lecteur CD android-x86-vm-20120130.iso Lancer la machine virtuelle Choisir une exécution en LiveCD Démarrer l'application "Terminal Emulator" Obtenir une adresse en DHCP netcfg eth0 dhcp Récupérer l'adresse addr de