Bonjour,
Je suis confronté à un problème, j'essaye de créer une connexion wifi direct entre un Androïde et une carte Orange PI.
Au Niveau du code Androïde, je me suis basé sur le tuto : android wifi direct.
Sur l'orange pi j’utilise wpa_ctrl.c, pour mes requêtes p2p.
Mon code basiquement fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
>  Connexion  à wpa_supplicant en utilisant  wpa_ctrl.c
-> PING REQUEST, reponse : PONG
-> P2p find
-> socket, bind , listen... Pour la creation du serveur, protocole TCP
-> p2p peer FIRST 
-> p2p_prov_disc MAC::address_Androïde pbc
-> using Select for checking Connection for accept
Sur Android :

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
 
 
 mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
                    @Override
                    public void onSuccess() {
                        System.out.println("Connection Suceess");
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                System.out.println("Trying Socket connection");
                                try {
                                    InetAddress serverAddr = InetAddress.getByName(SERVERIP);
                                    Socket socket = new Socket(serverAddr, 4242);
                                    OutputStream outstream = socket .getOutputStream();
                                    PrintWriter out = new PrintWriter(outstream);
                                    String toSend = "String to send";
                                    out.print(toSend);
                                    if (socket.isConnected())
                                    {
                                        System.out.println("Connected: t'es trop fort");
                                    }else
                                        System.out.println("NO CONNECTED: t'es trop naz");
                                    socket.close();
                                }catch (IOException e)
                                {
                                    System.out.println(e);
                                }
                            }
                        }).start();
                    }
                    @Override
                    public void onFailure(int i) {
                        Toast.makeText(MainActivity.this, "Connect failed. Retry.",
                                Toast.LENGTH_SHORT).show();
                        System.out.println(i);
                        System.out.println("Connection failed");
                    }
                });
            }
        });
J'obtiens un Connexion Sucess mais un fail sur la connexion Socket, mais je ne pense pas que le problème sois coté Androïde. Je ne rentre pas non plus dans la fonction de l'interface onConnectionInfoAvailable.

Je pense que le probleme viens du coté Orange Pi. En effet, si je ne trompe pas, sous Androïde quand je vais dans dans Wifi-direct et que je choisis l'orange Pi il devrait se connecter, or il tourne en boucle.
Si vous pouvez m'apportez de l'aide ce serait génial. Merci