IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Transfert de message TCP/IP, Socket


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 1
    Par défaut Transfert de message TCP/IP, Socket
    Bonjour,
    Je voudrais faire en sorte que mon smartphone fasse à la foi client et serveur.
    Je n'ai pas trouvé de tutoriel adapté à mes besoins, le mieux que j'ai trouvé c'est un tuto sous Eclipse et non Android studio mais c'est très bien expliqué :

    J'ai voulu tester mon client et serveur en passant par le cmd comme il l'a fait à la 11ème minute mais je rencontre quelques difficultés, en faisant la commande pour lancer la classe java il se produit ça :
    http://hpics.li/335892c


    Je rencontre aussi des problèmes lors du lancement de l'application mais vu que je suis encore un débutant en réseau , je ne sais pas d'ou provient le problème que je rencontre.
    Voici ce qu'il se passe lorsque je clique sur le bouton qui lance la méthode testServeur() de la classe Serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:623)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.net.ServerSocket.<init>(ServerSocket.java:103)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.net.ServerSocket.<init>(ServerSocket.java:74)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at com.example.matt.serveursocket.Serveur.testServeur(Serveur.java:29)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at com.example.matt.serveursocket.MainActivity.Serveur(MainActivity.java:35)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.view.View.performClick(View.java:5254)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.view.View$PerformClick.run(View.java:21179)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.os.Looper.loop(Looper.java:145)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6837)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at libcore.io.Posix.socket(Native Method)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:608)
    02-01 10:54:58.811 18277-18277/com.example.matt.serveursocket W/System.err: 	... 19 more


    Android Manifest.XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.matt.serveursocket">
        <permission  android:name="android.permission.INTERNET">
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
            <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
            <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        </permission>
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".Serveur"
                android:label="@string/title_activity_serveur"
                android:theme="@style/AppTheme.NoActionBar" />
            <activity
                android:name=".Client"
                android:label="@string/title_activity_client"
                android:theme="@style/AppTheme.NoActionBar" />
        </application>
     
    </manifest>

    TestClient.class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    package com.example.matt.serveursocket;
     
    import android.os.Bundle;
    import android.renderscript.ScriptGroup;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.*;
    import java.util.Scanner;
     
    public class Client extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_client);
        }
     
            public void testClient(){
            try {
                Socket socket = new Socket("localhost", 5200);
                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);
                Scanner saisie = new Scanner(System.in);
                System.out.println("Donner votre nom");
                String str = saisie.next();
                printWriter.println(str);
                String res = bufferedReader.readLine();
                System.out.println("Res = " + res);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    Serveur.class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    package com.example.matt.serveursocket;
     
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.*;
     
     
    public class Serveur extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_serveur);
        }
     
            public void testServeur() {
            try {
                ServerSocket serverSocket = new ServerSocket(5200);
                System.out.println("Attente de connexion");
                Socket socket = serverSocket.accept();
                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);
                System.out.println("J'attend une chaine de caractères");
                String str = bufferedReader.readLine();
                String rep = "Bonjour Mr " + str;
                System.out.println("Voici ma réponse");
                printWriter.println(rep);
                socket.close();
     
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        }
    Merci !!

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il manque une permission INTERNET non ? L'application ne déclare en utiliser aucune !


    D'ailleurs à propos de permissions... c'est quoi ce <permission> au début qui redéfinit un tas de permission déjà existantes du système ?

Discussions similaires

  1. Réponses: 17
    Dernier message: 15/05/2007, 18h35
  2. création d'un thread a la reception d'un message sur une socket
    Par jesus144 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 05/03/2007, 17h27
  3. transfert de fichier avec un socket
    Par horkets dans le forum Réseau
    Réponses: 2
    Dernier message: 22/10/2006, 12h29
  4. UDP/TCP multithreading/sockets asynchrones
    Par narkotik dans le forum C++
    Réponses: 4
    Dernier message: 25/07/2006, 11h35
  5. Transfert d'une image par socket stream
    Par francky23012301 dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2005, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo