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 !!