{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Android Client-Server utilisant Sockets &#8211; Implémentation de serveur\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-03T02:07:28+00:00","modified_at":"2019-05-03T02:07:28+00:00","word_count":1339,"reading_time_seconds":402,"summary":"Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant [&hellip;]","summary_points":["Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur.","Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client».","Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies.","Il est très facile de créer un serveur sous Android à l&#39;aide de ces bibliothèques intégrées."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"8cd108ee04b8d14a9522a6dc48bd15f9","plain_text":"Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies. Il est très facile de créer un serveur sous Android à l&#39;aide de ces bibliothèques intégrées.\nDétails d&#39;implémentation\nDans ce tutoriel, nous utiliserons java Sockets pour réaliser notre communication serveur-client. D&#39;un côté, il y aura un serveur qui se liera au port spécifié sur le périphérique et sera disponible pour le client en utilisant l&#39;adresse IP et la combinaison de ports. Le client utilisera également un port aléatoire pour la connexion. Une fois la connexion établie du côté client, le serveur sera rejoué au client avec “Bonjour du serveur, vous êtes #%ré”% D sera un nombre qui augmentera avec chaque connexion.\n\n[su_button url=”https://github.com/androidsrc/SocketServer” target=”blank” style=”stroked” background=”#51d461″ color=”#ffffff” size=”6″ center=”yes” radius=”0″ icon=”icon: arrow-circle-o-down”]Télécharger le code source complet[/su_button]\n\nRemarque : Ce tutoriel est basé sur Android Studio 2.2, Java 1.6 et Android 6.0.\nMise en oeuvre du serveur\nImplémentation de Server.java\nCette classe contient toute l&#39;implémentation du serveur. Dans cette classe, nous allons créer un objet de &quot;ServerSocket&quot; dans un fil séparé. Acceptez() fonctionner dans ServerSocket attend une demande entrante et se bloque jusqu&#39;à ce que la connexion soit ouverte. Cette méthode retourne un objet socket représentant la connexion qui vient d&#39;être ouverte. L&#39;adresse IP et le numéro de port du client peuvent être obtenus à partir de ce socket.\nLa classe privée SocketServerThread étend le thread {\r\n\r\nint compte = 0;\r\n\r\n@Passer outre\r\npublic void run () {\r\nessayer \r\n// crée ServerSocket en utilisant le port spécifié\r\nserverSocket = new ServerSocket (socketServerPORT);\r\n\r\nwhile (true) \r\n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\r\n// objet Socket\r\nSocket socket = serverSocket.accept ();\r\ncompter ++;\r\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\r\n+ socket.getInetAddress () + &quot;:&quot;\r\n+ socket.getPort () + &quot; n&quot;;\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\nSocketServerReplyThread socketServerReplyThread =\r\nnew SocketServerReplyThread (socket, nombre);\r\nsocketServerReplyThread.run ();\r\n\r\n\r\n catch (IOException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\n\r\n}\r\n}\nEnsuite, nous allons créer un objet de  &quot;SocketServerReplyThread&quot; qui étend thread et nous passons socket et comptons au constructeur. Suivant obtenir OutputStream de Prise en utilisant getOutputStream () une fonction. UNE PrintStream est maintenant créé en utilisant OutputStream object en tant que nouveau flux d&#39;impression ne vide pas automatiquement son contenu dans le flux cible lorsqu&#39;une nouvelle ligne est rencontrée. Après cela nous impression() rejouer PrintStream et Courant est fermé. Huhh beaucoup de théorie.\nLa classe privée SocketServerReplyThread étend le thread {\r\n\r\nSocket privé hostThreadSocket;\r\nint cnt;\r\n\r\nSocketServerReplyThread (Socket socket, int c) \r\nhostThreadSocket = socket;\r\ncnt = c;\r\n\r\n\r\n@Passer outre\r\npublic void run () \r\nOutputStream outputStream;\r\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;\r\n\r\nessayer \r\noutputStream = hostThreadSocket.getOutputStream ();\r\nPrintStream printStream = new PrintStream (outputStream);\r\nprintStream.print (msgReply);\r\nprintStream.close ();\r\n\r\nmessage + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n\r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\n catch (IOException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;\r\n\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n\r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\n}\nNous aurons enfin besoin d&#39;une méthode pour obtenir l&#39;adresse IP de notre serveur.\npublic String getIpAddress () {\r\nString ip = &quot;&quot;;\r\nessayer \r\nÉnumération enumNetworkInterfaces = NetworkInterface\r\n.getNetworkInterfaces ();\r\nwhile (enumNetworkInterfaces.hasMoreElements ()) \r\nNetworkInterface networkInterface = enumNetworkInterfaces\r\n.nextElement ();\r\nÉnumération enumInetAddress = networkInterface\r\n.getInetAddresses ();\r\nwhile (enumInetAddress.hasMoreElements ()) \r\nInetAddress inetAddress = enumInetAddress\r\n.nextElement ();\r\n\r\nif (inetAddress.isSiteLocalAddress ()) \r\nip + = &quot;Serveur tournant à:&quot;\r\n+ inetAddress.getHostAddress ();\r\n\r\n\r\n\r\n\r\n catch (SocketException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;\r\n\r\nretourne ip;\r\n}\nImplémentation complète de la classe Server.java\npackage com.androidsrc.server;\r\n\r\nimporter java.io.IOException;\r\nimporter java.io.OutputStream;\r\nimporter java.io.PrintStream;\r\nimporter java.net.InetAddress;\r\nimporter java.net.NetworkInterface;\r\nimporter java.net.ServerSocket;\r\nimporter java.net.Socket;\r\nimporter java.net.SocketException;\r\nimporter java.util.Enumeration;\r\n\r\nClasse publique Server {\r\nActivité MainActivity;\r\nServerSocket serverSocket;\r\nMessage de chaîne = &quot;&quot;;\r\nstatic final int socketServerPORT = 8080;\r\n\r\nserveur public (activité MainActivity) \r\nthis.activity = activité;\r\nThread socketServerThread = new Thread (nouveau SocketServerThread ());\r\nsocketServerThread.start ();\r\n\r\n\r\npublic int getPort () \r\nreturn socketServerPORT;\r\n\r\n\r\npublic void onDestroy () \r\nif (serverSocket! = null) \r\nessayer \r\nserverSocket.close ();\r\n catch (IOException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\n\r\n\r\n\r\n\r\nLa classe privée SocketServerThread étend le thread {\r\n\r\nint compte = 0;\r\n\r\n@Passer outre\r\npublic void run () {\r\nessayer \r\n// crée ServerSocket en utilisant le port spécifié\r\nserverSocket = new ServerSocket (socketServerPORT);\r\n\r\nwhile (true) \r\n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\r\n// objet Socket\r\nSocket socket = serverSocket.accept ();\r\ncompter ++;\r\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\r\n+ socket.getInetAddress () + &quot;:&quot;\r\n+ socket.getPort () + &quot; n&quot;;\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\nSocketServerReplyThread socketServerReplyThread =\r\nnew SocketServerReplyThread (socket, nombre);\r\nsocketServerReplyThread.run ();\r\n\r\n\r\n catch (IOException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\n\r\n}\r\n}\r\n\r\nLa classe privée SocketServerReplyThread étend le thread {\r\n\r\nSocket privé hostThreadSocket;\r\nint cnt;\r\n\r\nSocketServerReplyThread (Socket socket, int c) \r\nhostThreadSocket = socket;\r\ncnt = c;\r\n\r\n\r\n@Passer outre\r\npublic void run () \r\nOutputStream outputStream;\r\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;\r\n\r\nessayer \r\noutputStream = hostThreadSocket.getOutputStream ();\r\nPrintStream printStream = new PrintStream (outputStream);\r\nprintStream.print (msgReply);\r\nprintStream.close ();\r\n\r\nmessage + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n\r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\n catch (IOException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;\r\n\r\n\r\nactivity.runOnUiThread (new Runnable () \r\n\r\n@Passer outre\r\npublic void run () \r\nactivity.msg.setText (message);\r\n\r\n);\r\n\r\n\r\n}\r\n\r\npublic String getIpAddress () {\r\nString ip = &quot;&quot;;\r\nessayer \r\nÉnumération enumNetworkInterfaces = NetworkInterface\r\n.getNetworkInterfaces ();\r\nwhile (enumNetworkInterfaces.hasMoreElements ()) \r\nNetworkInterface networkInterface = enumNetworkInterfaces\r\n.nextElement ();\r\nÉnumération enumInetAddress = networkInterface\r\n.getInetAddresses ();\r\nwhile (enumInetAddress.hasMoreElements ()) \r\nInetAddress inetAddress = enumInetAddress\r\n.nextElement ();\r\n\r\nif (inetAddress.isSiteLocalAddress ()) \r\nip + = &quot;Serveur tournant à:&quot;\r\n+ inetAddress.getHostAddress ();\r\n\r\n\r\n\r\n\r\n catch (SocketException e) \r\n// TODO Bloc de capture généré automatiquement\r\ne.printStackTrace ();\r\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;\r\n\r\nretourne ip;\r\n}\r\n}\nImplémentation de la classe MainActivity.java\nL&#39;utilisation de la classe de serveur est très simple. Il vous suffit de créer un objet de la classe Server et de passer l&#39;instance MainActivity au constructeur, et vous avez terminé. Voici à quoi ressemble MainActivity.java.\npackage com.androidsrc.server;\r\n\r\nimporter android.os.Bundle;\r\nimporter android.app.Activity;\r\nimporter android.widget.TextView;\r\n\r\nClasse publique MainActivity étend Activity \r\n\r\nServeur serveur;\r\nTextView infoip, msg;\r\n\r\n@Passer outre\r\nVoid protégé onCreate (Bundle savedInstanceState) \r\nsuper.onCreate (savedInstanceState);\r\nsetContentView (R.layout.activity_main);\r\ninfoip = (TextView) findViewById (R.id.infoip);\r\nmsg = (TextView) findViewById (R.id.msg);\r\nserver = new Server (this);\r\ninfoip.setText (server.getIpAddress () + &quot;:&quot; + server.getPort ());\r\n\r\n\r\n@Passer outre\r\nvoid protected onDestroy () \r\nsuper.onDestroy ();\r\nserver.onDestroy ();\r\n\r\n\nAutres composants de support\nImplémentation du fichier activity_main.xml.\n\r\n\r\n    \r\n\r\n    \r\n\r\n    \r\n\r\n        \r\n    \r\n\r\n\n  AndroidManifest.xml\nNous aurons besoin de la permission INTERNET pour créer des sockets. N&#39;oubliez pas d&#39;inclure cette autorisation dans votre manifeste.\n\r\n\r\n\r\n    \r\n\r\n    \r\n\r\n    \r\n\r\n        \r\n\r\n            \r\n\r\n                \r\n\r\n                \r\n            \r\n        \r\n    \r\n\r\n\nTester l&#39;application\nPour tester cette application, installez-la sur un appareil Android et installez le client sur un autre appareil. Les deux appareils doivent être connectés au même réseau wifi. Ajoutez maintenant une adresse IP et un port au client, puis cliquez sur Connecter. Le serveur rejouera avec un message au client. Merci\n\nPour toute autre question ou tutoriel personnalisé, veuillez commenter ou nous envoyer un courrier électronique à l&#39;adresse androidsrcdotnet@gmail.com\n\n          \nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies. Il est très facile de créer un serveur sous Android à l&#39;aide de ces bibliothèques intégrées.\nDétails d&#39;implémentation\nDans ce tutoriel, nous utiliserons java Sockets pour réaliser notre communication serveur-client. D&#39;un côté, il y aura un serveur qui se liera au port spécifié sur le périphérique et sera disponible pour le client en utilisant l&#39;adresse IP et la combinaison de ports. Le client utilisera également un port aléatoire pour la connexion. Une fois la connexion établie du côté client, le serveur sera rejoué au client avec “Bonjour du serveur, vous êtes #%ré”% D sera un nombre qui augmentera avec chaque connexion.","[su_button url=”https://github.com/androidsrc/SocketServer” target=”blank” style=”stroked” background=”#51d461″ color=”#ffffff” size=”6″ center=”yes” radius=”0″ icon=”icon: arrow-circle-o-down”]Télécharger le code source complet[/su_button]","Remarque : Ce tutoriel est basé sur Android Studio 2.2, Java 1.6 et Android 6.0.\nMise en oeuvre du serveur\nImplémentation de Server.java\nCette classe contient toute l&#39;implémentation du serveur. Dans cette classe, nous allons créer un objet de &quot;ServerSocket&quot; dans un fil séparé. Acceptez() fonctionner dans ServerSocket attend une demande entrante et se bloque jusqu&#39;à ce que la connexion soit ouverte. Cette méthode retourne un objet socket représentant la connexion qui vient d&#39;être ouverte. L&#39;adresse IP et le numéro de port du client peuvent être obtenus à partir de ce socket.\nLa classe privée SocketServerThread étend le thread {","int compte = 0;","@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);","while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;","activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();","catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","}\n}\nEnsuite, nous allons créer un objet de  &quot;SocketServerReplyThread&quot; qui étend thread et nous passons socket et comptons au constructeur. Suivant obtenir OutputStream de Prise en utilisant getOutputStream () une fonction. UNE PrintStream est maintenant créé en utilisant OutputStream object en tant que nouveau flux d&#39;impression ne vide pas automatiquement son contenu dans le flux cible lorsqu&#39;une nouvelle ligne est rencontrée. Après cela nous impression() rejouer PrintStream et Courant est fermé. Huhh beaucoup de théorie.\nLa classe privée SocketServerReplyThread étend le thread {","Socket privé hostThreadSocket;\nint cnt;","SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;","@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;","essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();","message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;","activity.runOnUiThread (new Runnable ()","@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","activity.runOnUiThread (new Runnable ()","@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","}\nNous aurons enfin besoin d&#39;une méthode pour obtenir l&#39;adresse IP de notre serveur.\npublic String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();","if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();","catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","retourne ip;\n}\nImplémentation complète de la classe Server.java\npackage com.androidsrc.server;","importer java.io.IOException;\nimporter java.io.OutputStream;\nimporter java.io.PrintStream;\nimporter java.net.InetAddress;\nimporter java.net.NetworkInterface;\nimporter java.net.ServerSocket;\nimporter java.net.Socket;\nimporter java.net.SocketException;\nimporter java.util.Enumeration;","Classe publique Server {\nActivité MainActivity;\nServerSocket serverSocket;\nMessage de chaîne = &quot;&quot;;\nstatic final int socketServerPORT = 8080;","serveur public (activité MainActivity) \nthis.activity = activité;\nThread socketServerThread = new Thread (nouveau SocketServerThread ());\nsocketServerThread.start ();","public int getPort () \nreturn socketServerPORT;","public void onDestroy () \nif (serverSocket! = null) \nessayer \nserverSocket.close ();\n catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","La classe privée SocketServerThread étend le thread {","int compte = 0;","@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);","while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;","activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();","catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","}\n}","La classe privée SocketServerReplyThread étend le thread {","Socket privé hostThreadSocket;\nint cnt;","SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;","@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;","essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();","message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;","activity.runOnUiThread (new Runnable ()","@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","activity.runOnUiThread (new Runnable ()","@Passer outre\npublic void run () \nactivity.msg.setText (message);",");","}","public String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();","if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();","catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","retourne ip;\n}\n}\nImplémentation de la classe MainActivity.java\nL&#39;utilisation de la classe de serveur est très simple. Il vous suffit de créer un objet de la classe Server et de passer l&#39;instance MainActivity au constructeur, et vous avez terminé. Voici à quoi ressemble MainActivity.java.\npackage com.androidsrc.server;","importer android.os.Bundle;\nimporter android.app.Activity;\nimporter android.widget.TextView;","Classe publique MainActivity étend Activity","Serveur serveur;\nTextView infoip, msg;","@Passer outre\nVoid protégé onCreate (Bundle savedInstanceState) \nsuper.onCreate (savedInstanceState);\nsetContentView (R.layout.activity_main);\ninfoip = (TextView) findViewById (R.id.infoip);\nmsg = (TextView) findViewById (R.id.msg);\nserver = new Server (this);\ninfoip.setText (server.getIpAddress () + &quot;:&quot; + server.getPort ());","@Passer outre\nvoid protected onDestroy () \nsuper.onDestroy ();\nserver.onDestroy ();","Autres composants de support\nImplémentation du fichier activity_main.xml.","AndroidManifest.xml\nNous aurons besoin de la permission INTERNET pour créer des sockets. N&#39;oubliez pas d&#39;inclure cette autorisation dans votre manifeste.","Tester l&#39;application\nPour tester cette application, installez-la sur un appareil Android et installez le client sur un autre appareil. Les deux appareils doivent être connectés au même réseau wifi. Ajoutez maintenant une adresse IP et un port au client, puis cliquez sur Connecter. Le serveur rejouera avec un message au client. Merci","Pour toute autre question ou tutoriel personnalisé, veuillez commenter ou nous envoyer un courrier électronique à l&#39;adresse androidsrcdotnet@gmail.com","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies. Il est très facile de créer un serveur sous Android à l&#39;aide de ces bibliothèques intégrées.\nDétails d&#39;implémentation\nDans ce tutoriel, nous utiliserons java Sockets pour réaliser notre communication serveur-client. D&#39;un côté, il y aura un serveur qui se liera au port spécifié sur le périphérique et sera disponible pour le client en utilisant l&#39;adresse IP et la combinaison de ports. Le client utilisera également un port aléatoire pour la connexion. Une fois la connexion établie du côté client, le serveur sera rejoué au client avec “Bonjour du serveur, vous êtes #%ré”% D sera un nombre qui augmentera avec chaque connexion.","html":"<p>Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies. Il est très facile de créer un serveur sous Android à l&#039;aide de ces bibliothèques intégrées.\nDétails d&#039;implémentation\nDans ce tutoriel, nous utiliserons java Sockets pour réaliser notre communication serveur-client. D&#039;un côté, il y aura un serveur qui se liera au port spécifié sur le périphérique et sera disponible pour le client en utilisant l&#039;adresse IP et la combinaison de ports. Le client utilisera également un port aléatoire pour la connexion. Une fois la connexion établie du côté client, le serveur sera rejoué au client avec “Bonjour du serveur, vous êtes #%ré”% D sera un nombre qui augmentera avec chaque connexion.</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"[su_button url=”https://github.com/androidsrc/SocketServer” target=”blank” style=”stroked” background=”#51d461″ color=”#ffffff” size=”6″ center=”yes” radius=”0″ icon=”icon: arrow-circle-o-down”]Télécharger le code source complet[/su_button]","html":"<p>[su_button url=”https://github.com/androidsrc/SocketServer” target=”blank” style=”stroked” background=”#51d461″ color=”#ffffff” size=”6″ center=”yes” radius=”0″ icon=”icon: arrow-circle-o-down”]Télécharger le code source complet[/su_button]</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Remarque : Ce tutoriel est basé sur Android Studio 2.2, Java 1.6 et Android 6.0.\nMise en oeuvre du serveur\nImplémentation de Server.java\nCette classe contient toute l&#39;implémentation du serveur. Dans cette classe, nous allons créer un objet de &quot;ServerSocket&quot; dans un fil séparé. Acceptez() fonctionner dans ServerSocket attend une demande entrante et se bloque jusqu&#39;à ce que la connexion soit ouverte. Cette méthode retourne un objet socket représentant la connexion qui vient d&#39;être ouverte. L&#39;adresse IP et le numéro de port du client peuvent être obtenus à partir de ce socket.\nLa classe privée SocketServerThread étend le thread {","html":"<p>Remarque : Ce tutoriel est basé sur Android Studio 2.2, Java 1.6 et Android 6.0.\nMise en oeuvre du serveur\nImplémentation de Server.java\nCette classe contient toute l&#039;implémentation du serveur. Dans cette classe, nous allons créer un objet de &quot;ServerSocket&quot; dans un fil séparé. Acceptez() fonctionner dans ServerSocket attend une demande entrante et se bloque jusqu&#039;à ce que la connexion soit ouverte. Cette méthode retourne un objet socket représentant la connexion qui vient d&#039;être ouverte. L&#039;adresse IP et le numéro de port du client peuvent être obtenus à partir de ce socket.\nLa classe privée SocketServerThread étend le thread {</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"int compte = 0;","html":"<p>int compte = 0;</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);","html":"<p>@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;","html":"<p>while (true) \n// bloque l&#039;appel jusqu&#039;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-8","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();","html":"<p>SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","html":"<p>catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"}\n}\nEnsuite, nous allons créer un objet de  &quot;SocketServerReplyThread&quot; qui étend thread et nous passons socket et comptons au constructeur. Suivant obtenir OutputStream de Prise en utilisant getOutputStream () une fonction. UNE PrintStream est maintenant créé en utilisant OutputStream object en tant que nouveau flux d&#39;impression ne vide pas automatiquement son contenu dans le flux cible lorsqu&#39;une nouvelle ligne est rencontrée. Après cela nous impression() rejouer PrintStream et Courant est fermé. Huhh beaucoup de théorie.\nLa classe privée SocketServerReplyThread étend le thread {","html":"<p>}\n}\nEnsuite, nous allons créer un objet de  &quot;SocketServerReplyThread&quot; qui étend thread et nous passons socket et comptons au constructeur. Suivant obtenir OutputStream de Prise en utilisant getOutputStream () une fonction. UNE PrintStream est maintenant créé en utilisant OutputStream object en tant que nouveau flux d&#039;impression ne vide pas automatiquement son contenu dans le flux cible lorsqu&#039;une nouvelle ligne est rencontrée. Après cela nous impression() rejouer PrintStream et Courant est fermé. Huhh beaucoup de théorie.\nLa classe privée SocketServerReplyThread étend le thread {</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Socket privé hostThreadSocket;\nint cnt;","html":"<p>Socket privé hostThreadSocket;\nint cnt;</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;","html":"<p>SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;","html":"<p>@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();","html":"<p>essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;","html":"<p>message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable ()","html":"<p>activity.runOnUiThread (new Runnable ()</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-19","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","html":"<p>catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable ()","html":"<p>activity.runOnUiThread (new Runnable ()</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-23","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"}\nNous aurons enfin besoin d&#39;une méthode pour obtenir l&#39;adresse IP de notre serveur.\npublic String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();","html":"<p>}\nNous aurons enfin besoin d&#039;une méthode pour obtenir l&#039;adresse IP de notre serveur.\npublic String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();","html":"<p>if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","html":"<p>catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"retourne ip;\n}\nImplémentation complète de la classe Server.java\npackage com.androidsrc.server;","html":"<p>retourne ip;\n}\nImplémentation complète de la classe Server.java\npackage com.androidsrc.server;</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"importer java.io.IOException;\nimporter java.io.OutputStream;\nimporter java.io.PrintStream;\nimporter java.net.InetAddress;\nimporter java.net.NetworkInterface;\nimporter java.net.ServerSocket;\nimporter java.net.Socket;\nimporter java.net.SocketException;\nimporter java.util.Enumeration;","html":"<p>importer java.io.IOException;\nimporter java.io.OutputStream;\nimporter java.io.PrintStream;\nimporter java.net.InetAddress;\nimporter java.net.NetworkInterface;\nimporter java.net.ServerSocket;\nimporter java.net.Socket;\nimporter java.net.SocketException;\nimporter java.util.Enumeration;</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"Classe publique Server {\nActivité MainActivity;\nServerSocket serverSocket;\nMessage de chaîne = &quot;&quot;;\nstatic final int socketServerPORT = 8080;","html":"<p>Classe publique Server {\nActivité MainActivity;\nServerSocket serverSocket;\nMessage de chaîne = &quot;&quot;;\nstatic final int socketServerPORT = 8080;</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"serveur public (activité MainActivity) \nthis.activity = activité;\nThread socketServerThread = new Thread (nouveau SocketServerThread ());\nsocketServerThread.start ();","html":"<p>serveur public (activité MainActivity) \nthis.activity = activité;\nThread socketServerThread = new Thread (nouveau SocketServerThread ());\nsocketServerThread.start ();</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"public int getPort () \nreturn socketServerPORT;","html":"<p>public int getPort () \nreturn socketServerPORT;</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"public void onDestroy () \nif (serverSocket! = null) \nessayer \nserverSocket.close ();\n catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","html":"<p>public void onDestroy () \nif (serverSocket! = null) \nessayer \nserverSocket.close ();\n catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"La classe privée SocketServerThread étend le thread {","html":"<p>La classe privée SocketServerThread étend le thread {</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"int compte = 0;","html":"<p>int compte = 0;</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);","html":"<p>@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;","html":"<p>while (true) \n// bloque l&#039;appel jusqu&#039;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-38","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();","html":"<p>SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();","html":"<p>catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"}\n}","html":"<p>}\n}</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"La classe privée SocketServerReplyThread étend le thread {","html":"<p>La classe privée SocketServerReplyThread étend le thread {</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"Socket privé hostThreadSocket;\nint cnt;","html":"<p>Socket privé hostThreadSocket;\nint cnt;</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;","html":"<p>SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;","html":"<p>@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();","html":"<p>essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;","html":"<p>message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable ()","html":"<p>activity.runOnUiThread (new Runnable ()</p>"},{"id":"text-49","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-50","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-51","type":"text","heading":"","plain_text":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","html":"<p>catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"activity.runOnUiThread (new Runnable ()","html":"<p>activity.runOnUiThread (new Runnable ()</p>"},{"id":"text-53","type":"text","heading":"","plain_text":"@Passer outre\npublic void run () \nactivity.msg.setText (message);","html":"<p>@Passer outre\npublic void run () \nactivity.msg.setText (message);</p>"},{"id":"text-54","type":"text","heading":"","plain_text":");","html":"<p>);</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"}","html":"<p>}</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"public String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();","html":"<p>public String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();</p>"},{"id":"text-57","type":"text","heading":"","plain_text":"if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();","html":"<p>if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();</p>"},{"id":"text-58","type":"text","heading":"","plain_text":"catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;","html":"<p>catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;</p>"},{"id":"text-59","type":"text","heading":"","plain_text":"retourne ip;\n}\n}\nImplémentation de la classe MainActivity.java\nL&#39;utilisation de la classe de serveur est très simple. Il vous suffit de créer un objet de la classe Server et de passer l&#39;instance MainActivity au constructeur, et vous avez terminé. Voici à quoi ressemble MainActivity.java.\npackage com.androidsrc.server;","html":"<p>retourne ip;\n}\n}\nImplémentation de la classe MainActivity.java\nL&#039;utilisation de la classe de serveur est très simple. Il vous suffit de créer un objet de la classe Server et de passer l&#039;instance MainActivity au constructeur, et vous avez terminé. Voici à quoi ressemble MainActivity.java.\npackage com.androidsrc.server;</p>"},{"id":"text-60","type":"text","heading":"","plain_text":"importer android.os.Bundle;\nimporter android.app.Activity;\nimporter android.widget.TextView;","html":"<p>importer android.os.Bundle;\nimporter android.app.Activity;\nimporter android.widget.TextView;</p>"},{"id":"text-61","type":"text","heading":"","plain_text":"Classe publique MainActivity étend Activity","html":"<p>Classe publique MainActivity étend Activity</p>"},{"id":"text-62","type":"text","heading":"","plain_text":"Serveur serveur;\nTextView infoip, msg;","html":"<p>Serveur serveur;\nTextView infoip, msg;</p>"},{"id":"text-63","type":"text","heading":"","plain_text":"@Passer outre\nVoid protégé onCreate (Bundle savedInstanceState) \nsuper.onCreate (savedInstanceState);\nsetContentView (R.layout.activity_main);\ninfoip = (TextView) findViewById (R.id.infoip);\nmsg = (TextView) findViewById (R.id.msg);\nserver = new Server (this);\ninfoip.setText (server.getIpAddress () + &quot;:&quot; + server.getPort ());","html":"<p>@Passer outre\nVoid protégé onCreate (Bundle savedInstanceState) \nsuper.onCreate (savedInstanceState);\nsetContentView (R.layout.activity_main);\ninfoip = (TextView) findViewById (R.id.infoip);\nmsg = (TextView) findViewById (R.id.msg);\nserver = new Server (this);\ninfoip.setText (server.getIpAddress () + &quot;:&quot; + server.getPort ());</p>"},{"id":"text-64","type":"text","heading":"","plain_text":"@Passer outre\nvoid protected onDestroy () \nsuper.onDestroy ();\nserver.onDestroy ();","html":"<p>@Passer outre\nvoid protected onDestroy () \nsuper.onDestroy ();\nserver.onDestroy ();</p>"},{"id":"text-65","type":"text","heading":"","plain_text":"Autres composants de support\nImplémentation du fichier activity_main.xml.","html":"<p>Autres composants de support\nImplémentation du fichier activity_main.xml.</p>"},{"id":"text-66","type":"text","heading":"","plain_text":"AndroidManifest.xml\nNous aurons besoin de la permission INTERNET pour créer des sockets. N&#39;oubliez pas d&#39;inclure cette autorisation dans votre manifeste.","html":"<p>AndroidManifest.xml\nNous aurons besoin de la permission INTERNET pour créer des sockets. N&#039;oubliez pas d&#039;inclure cette autorisation dans votre manifeste.</p>"},{"id":"text-67","type":"text","heading":"","plain_text":"Tester l&#39;application\nPour tester cette application, installez-la sur un appareil Android et installez le client sur un autre appareil. Les deux appareils doivent être connectés au même réseau wifi. Ajoutez maintenant une adresse IP et un port au client, puis cliquez sur Connecter. Le serveur rejouera avec un message au client. Merci","html":"<p>Tester l&#039;application\nPour tester cette application, installez-la sur un appareil Android et installez le client sur un autre appareil. Les deux appareils doivent être connectés au même réseau wifi. Ajoutez maintenant une adresse IP et un port au client, puis cliquez sur Connecter. Le serveur rejouera avec un message au client. Merci</p>"},{"id":"text-68","type":"text","heading":"","plain_text":"Pour toute autre question ou tutoriel personnalisé, veuillez commenter ou nous envoyer un courrier électronique à l&#39;adresse androidsrcdotnet@gmail.com","html":"<p>Pour toute autre question ou tutoriel personnalisé, veuillez commenter ou nous envoyer un courrier électronique à l&#039;adresse androidsrcdotnet@gmail.com</p>"},{"id":"text-69","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Dans cette série client / serveur Android utilisant Sockets post, nous allons nous concentrer sur la mise en œuvre côté serveur. Nous avons traité de la mise en œuvre côté client dans notre précédent article «Client-serveur Android utilisant des sockets &#8211; Mise en œuvre du client». Android possède un très vaste ensemble de bibliothèques permettant aux utilisateurs de mettre en œuvre des idées innovantes avec les bibliothèques fournies. Il est très facile de créer un serveur sous Android à l&#39;aide de ces bibliothèques intégrées.\nDétails d&#39;implémentation\nDans ce tutoriel, nous utiliserons java Sockets pour réaliser notre communication serveur-client. D&#39;un côté, il y aura un serveur qui se liera au port spécifié sur le périphérique et sera disponible pour le client en utilisant l&#39;adresse IP et la combinaison de ports. Le client utilisera également un port aléatoire pour la connexion. Une fois la connexion établie du côté client, le serveur sera rejoué au client avec “Bonjour du serveur, vous êtes #%ré”% D sera un nombre qui augmentera avec chaque connexion."},{"id":"text-2","heading":"Text","content":"[su_button url=”https://github.com/androidsrc/SocketServer” target=”blank” style=”stroked” background=”#51d461″ color=”#ffffff” size=”6″ center=”yes” radius=”0″ icon=”icon: arrow-circle-o-down”]Télécharger le code source complet[/su_button]"},{"id":"text-3","heading":"Text","content":"Remarque : Ce tutoriel est basé sur Android Studio 2.2, Java 1.6 et Android 6.0.\nMise en oeuvre du serveur\nImplémentation de Server.java\nCette classe contient toute l&#39;implémentation du serveur. Dans cette classe, nous allons créer un objet de &quot;ServerSocket&quot; dans un fil séparé. Acceptez() fonctionner dans ServerSocket attend une demande entrante et se bloque jusqu&#39;à ce que la connexion soit ouverte. Cette méthode retourne un objet socket représentant la connexion qui vient d&#39;être ouverte. L&#39;adresse IP et le numéro de port du client peuvent être obtenus à partir de ce socket.\nLa classe privée SocketServerThread étend le thread {"},{"id":"text-4","heading":"Text","content":"int compte = 0;"},{"id":"text-5","heading":"Text","content":"@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);"},{"id":"text-6","heading":"Text","content":"while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;"},{"id":"text-7","heading":"Text","content":"activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-8","heading":"Text","content":");"},{"id":"text-9","heading":"Text","content":"SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();"},{"id":"text-10","heading":"Text","content":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();"},{"id":"text-11","heading":"Text","content":"}\n}\nEnsuite, nous allons créer un objet de  &quot;SocketServerReplyThread&quot; qui étend thread et nous passons socket et comptons au constructeur. Suivant obtenir OutputStream de Prise en utilisant getOutputStream () une fonction. UNE PrintStream est maintenant créé en utilisant OutputStream object en tant que nouveau flux d&#39;impression ne vide pas automatiquement son contenu dans le flux cible lorsqu&#39;une nouvelle ligne est rencontrée. Après cela nous impression() rejouer PrintStream et Courant est fermé. Huhh beaucoup de théorie.\nLa classe privée SocketServerReplyThread étend le thread {"},{"id":"text-12","heading":"Text","content":"Socket privé hostThreadSocket;\nint cnt;"},{"id":"text-13","heading":"Text","content":"SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;"},{"id":"text-14","heading":"Text","content":"@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;"},{"id":"text-15","heading":"Text","content":"essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();"},{"id":"text-16","heading":"Text","content":"message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;"},{"id":"text-17","heading":"Text","content":"activity.runOnUiThread (new Runnable ()"},{"id":"text-18","heading":"Text","content":"@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-19","heading":"Text","content":");"},{"id":"text-20","heading":"Text","content":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;"},{"id":"text-21","heading":"Text","content":"activity.runOnUiThread (new Runnable ()"},{"id":"text-22","heading":"Text","content":"@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-23","heading":"Text","content":");"},{"id":"text-24","heading":"Text","content":"}\nNous aurons enfin besoin d&#39;une méthode pour obtenir l&#39;adresse IP de notre serveur.\npublic String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();"},{"id":"text-25","heading":"Text","content":"if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();"},{"id":"text-26","heading":"Text","content":"catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;"},{"id":"text-27","heading":"Text","content":"retourne ip;\n}\nImplémentation complète de la classe Server.java\npackage com.androidsrc.server;"},{"id":"text-28","heading":"Text","content":"importer java.io.IOException;\nimporter java.io.OutputStream;\nimporter java.io.PrintStream;\nimporter java.net.InetAddress;\nimporter java.net.NetworkInterface;\nimporter java.net.ServerSocket;\nimporter java.net.Socket;\nimporter java.net.SocketException;\nimporter java.util.Enumeration;"},{"id":"text-29","heading":"Text","content":"Classe publique Server {\nActivité MainActivity;\nServerSocket serverSocket;\nMessage de chaîne = &quot;&quot;;\nstatic final int socketServerPORT = 8080;"},{"id":"text-30","heading":"Text","content":"serveur public (activité MainActivity) \nthis.activity = activité;\nThread socketServerThread = new Thread (nouveau SocketServerThread ());\nsocketServerThread.start ();"},{"id":"text-31","heading":"Text","content":"public int getPort () \nreturn socketServerPORT;"},{"id":"text-32","heading":"Text","content":"public void onDestroy () \nif (serverSocket! = null) \nessayer \nserverSocket.close ();\n catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();"},{"id":"text-33","heading":"Text","content":"La classe privée SocketServerThread étend le thread {"},{"id":"text-34","heading":"Text","content":"int compte = 0;"},{"id":"text-35","heading":"Text","content":"@Passer outre\npublic void run () {\nessayer \n// crée ServerSocket en utilisant le port spécifié\nserverSocket = new ServerSocket (socketServerPORT);"},{"id":"text-36","heading":"Text","content":"while (true) \n// bloque l&#39;appel jusqu&#39;à ce que la connexion soit créée et retourne\n// objet Socket\nSocket socket = serverSocket.accept ();\ncompter ++;\nmessage + = &quot;#&quot; + compte + &quot;de&quot;\n+ socket.getInetAddress () + &quot;:&quot;\n+ socket.getPort () + &quot; n&quot;;"},{"id":"text-37","heading":"Text","content":"activity.runOnUiThread (new Runnable () \n@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-38","heading":"Text","content":");"},{"id":"text-39","heading":"Text","content":"SocketServerReplyThread socketServerReplyThread =\nnew SocketServerReplyThread (socket, nombre);\nsocketServerReplyThread.run ();"},{"id":"text-40","heading":"Text","content":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();"},{"id":"text-41","heading":"Text","content":"}\n}"},{"id":"text-42","heading":"Text","content":"La classe privée SocketServerReplyThread étend le thread {"},{"id":"text-43","heading":"Text","content":"Socket privé hostThreadSocket;\nint cnt;"},{"id":"text-44","heading":"Text","content":"SocketServerReplyThread (Socket socket, int c) \nhostThreadSocket = socket;\ncnt = c;"},{"id":"text-45","heading":"Text","content":"@Passer outre\npublic void run () \nOutputStream outputStream;\nString msgReply = &quot;Bonjour du serveur, vous êtes #&quot; + cnt;"},{"id":"text-46","heading":"Text","content":"essayer \noutputStream = hostThreadSocket.getOutputStream ();\nPrintStream printStream = new PrintStream (outputStream);\nprintStream.print (msgReply);\nprintStream.close ();"},{"id":"text-47","heading":"Text","content":"message + = &quot;rejoué:&quot; + msgReply + &quot; n&quot;;"},{"id":"text-48","heading":"Text","content":"activity.runOnUiThread (new Runnable ()"},{"id":"text-49","heading":"Text","content":"@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-50","heading":"Text","content":");"},{"id":"text-51","heading":"Text","content":"catch (IOException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nmessage + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;"},{"id":"text-52","heading":"Text","content":"activity.runOnUiThread (new Runnable ()"},{"id":"text-53","heading":"Text","content":"@Passer outre\npublic void run () \nactivity.msg.setText (message);"},{"id":"text-54","heading":"Text","content":");"},{"id":"text-55","heading":"Text","content":"}"},{"id":"text-56","heading":"Text","content":"public String getIpAddress () {\nString ip = &quot;&quot;;\nessayer \nÉnumération enumNetworkInterfaces = NetworkInterface\n.getNetworkInterfaces ();\nwhile (enumNetworkInterfaces.hasMoreElements ()) \nNetworkInterface networkInterface = enumNetworkInterfaces\n.nextElement ();\nÉnumération enumInetAddress = networkInterface\n.getInetAddresses ();\nwhile (enumInetAddress.hasMoreElements ()) \nInetAddress inetAddress = enumInetAddress\n.nextElement ();"},{"id":"text-57","heading":"Text","content":"if (inetAddress.isSiteLocalAddress ()) \nip + = &quot;Serveur tournant à:&quot;\n+ inetAddress.getHostAddress ();"},{"id":"text-58","heading":"Text","content":"catch (SocketException e) \n// TODO Bloc de capture généré automatiquement\ne.printStackTrace ();\nip + = &quot;Quelque chose ne va pas!&quot; + e.toString () + &quot; n&quot;;"},{"id":"text-59","heading":"Text","content":"retourne ip;\n}\n}\nImplémentation de la classe MainActivity.java\nL&#39;utilisation de la classe de serveur est très simple. Il vous suffit de créer un objet de la classe Server et de passer l&#39;instance MainActivity au constructeur, et vous avez terminé. Voici à quoi ressemble MainActivity.java.\npackage com.androidsrc.server;"},{"id":"text-60","heading":"Text","content":"importer android.os.Bundle;\nimporter android.app.Activity;\nimporter android.widget.TextView;"},{"id":"text-61","heading":"Text","content":"Classe publique MainActivity étend Activity"},{"id":"text-62","heading":"Text","content":"Serveur serveur;\nTextView infoip, msg;"},{"id":"text-63","heading":"Text","content":"@Passer outre\nVoid protégé onCreate (Bundle savedInstanceState) \nsuper.onCreate (savedInstanceState);\nsetContentView (R.layout.activity_main);\ninfoip = (TextView) findViewById (R.id.infoip);\nmsg = (TextView) findViewById (R.id.msg);\nserver = new Server (this);\ninfoip.setText (server.getIpAddress () + &quot;:&quot; + server.getPort ());"},{"id":"text-64","heading":"Text","content":"@Passer outre\nvoid protected onDestroy () \nsuper.onDestroy ();\nserver.onDestroy ();"},{"id":"text-65","heading":"Text","content":"Autres composants de support\nImplémentation du fichier activity_main.xml."},{"id":"text-66","heading":"Text","content":"AndroidManifest.xml\nNous aurons besoin de la permission INTERNET pour créer des sockets. N&#39;oubliez pas d&#39;inclure cette autorisation dans votre manifeste."},{"id":"text-67","heading":"Text","content":"Tester l&#39;application\nPour tester cette application, installez-la sur un appareil Android et installez le client sur un autre appareil. Les deux appareils doivent être connectés au même réseau wifi. Ajoutez maintenant une adresse IP et un port au client, puis cliquez sur Connecter. Le serveur rejouera avec un message au client. Merci"},{"id":"text-68","heading":"Text","content":"Pour toute autre question ou tutoriel personnalisé, veuillez commenter ou nous envoyer un courrier électronique à l&#39;adresse androidsrcdotnet@gmail.com"},{"id":"text-69","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/android-client-server-utilisant-sockets-implementation-de-serveur-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}