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 :

Passer un objet d'un PC à Android via une socket


Sujet :

API standards et tierces Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut Passer un objet d'un PC à Android via une socket
    Bonjour tout est dans le titre
    j'aimerais récupérer une liste de fichier de mon PC et l'afficher sur mon smartphone
    je vous montre mon code

    coté serveur (java):
    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
    	import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    public class Mot_Serveur {
     
    	public static File f=new File("C:\\Users\\JM\\Downloads");
     
    	    public static void main(String[] zero) throws IOException {
     
    	    	ServerSocket socketserver;
    	    	Socket serverClient;
    	    	ObjectOutputStream out;
    			String[] liste_fichier = f.list();
     
    	    	try{
    	        socketserver = new ServerSocket(8666) ;
    	        serverClient = socketserver.accept() ;
    	        out = new ObjectOutputStream(serverClient.getOutputStream());
    	        out.writeObject(liste_fichier);
    	        out.flush();
    	        out.close();	
    	        serverClient.close();
    		    }
    		    catch (UnknownHostException e) {
     
    	            e.printStackTrace();
    	        }
    		    catch (FileNotFoundException e) {
    		        e.printStackTrace();
    		    } catch (IOException e) {
    		        e.printStackTrace();
    		      }   
    	    	}
    	    }
    coté client:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    package com.example.mot_client;
     
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.net.Socket;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
     
    public class MainActivity extends Activity {
     
    	private Handler handler = new Handler();
     
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		TraitementDonnées();
    	}
    	private void TraitementDonnées() {
     
    		Thread thread = new Thread(null,doBackgroundThreadProcessing,"Background");
    		thread.start();
    	}
    	private Runnable doBackgroundThreadProcessing = new Runnable() {
     
    			@Override
    			public void run() {
    				ObjectInputStream in ;
    				Socket socket;
    				final String reception[];
    				try{
    					//on etablie la connection et on récupère le flux entrant de la socket
    					socket = new Socket("192.168.0.11",8666);
    					Log.v("Connection","etablie !");
    					in = new ObjectInputStream(socket.getInputStream());
    					//on stocke recupère les données sur la socket
    					reception = (String[]) in.readObject();
    					handler.post(new Runnable(){
    						@Override
    						public void run() {
    							// TODO Auto-generated method stub
    							ListView list = (ListView)findViewById(R.id.listView1);	
    							ArrayAdapter adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,reception);
    							list.setAdapter(adapter);
    						}
    					});
    					socket.close();
    				} catch (IOException e) {
    					Log.e("PAO","IO Exception.", e);
    				} catch (ClassNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
     
    		};
     
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.activity_main, menu);
    		return true;
    	}
     
    }
    et voici les erreurs que j'obtiens
    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
    01-30 01:23:20.905: D/CLIPBOARD(23514): Hide Clipboard dialog at Starting input: finished by someone else... !
    01-30 01:23:26.450: E/PAO(23514): IO Exception.
    01-30 01:23:26.450: E/PAO(23514): java.net.SocketException: socket failed: EACCES (Permission denied)
    01-30 01:23:26.450: E/PAO(23514): 	at libcore.io.IoBridge.socket(IoBridge.java:573)
    01-30 01:23:26.450: E/PAO(23514): 	at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
    01-30 01:23:26.450: E/PAO(23514): 	at java.net.Socket.startupSocket(Socket.java:559)
    01-30 01:23:26.450: E/PAO(23514): 	at java.net.Socket.tryAllAddresses(Socket.java:127)
    01-30 01:23:26.450: E/PAO(23514): 	at java.net.Socket.<init>(Socket.java:177)
    01-30 01:23:26.450: E/PAO(23514): 	at java.net.Socket.<init>(Socket.java:149)
    01-30 01:23:26.450: E/PAO(23514): 	at com.example.mot_client.MainActivity$1.run(MainActivity.java:38)
    01-30 01:23:26.450: E/PAO(23514): 	at java.lang.Thread.run(Thread.java:856)
    01-30 01:23:26.450: E/PAO(23514): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
    01-30 01:23:26.450: E/PAO(23514): 	at libcore.io.Posix.socket(Native Method)
    01-30 01:23:26.450: E/PAO(23514): 	at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
    01-30 01:23:26.450: E/PAO(23514): 	at libcore.io.IoBridge.socket(IoBridge.java:558)
    01-30 01:23:26.450: E/PAO(23514): 	... 7 more
    01-30 01:23:50.900: W/IInputConnectionWrapper(23514): getExtractedText on inactive InputConnection
    01-30 01:23:50.925: W/IInputConnectionWrapper(23514): getExtractedText on inactive InputConnection
    merci de votre aide !

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    Ok j'ai trouvé le problème
    en fait je n'arriva pas a me connecter hors réseau local wifi.
    donc ma question est la suivante :est il possible d'envoyer des données via les sockets hors réseau local ?
    et si oui ( j'espère ) comment faire ?

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut
    Théoriquement, oui tu peux envoyer des fichiers en dehors d'un réseau local.
    Par contre, tu ne pourras pas cibler ton pc avec cette adresse IP (192.168.0.11) étant donné qu'elle n'a de sens qu'à l'intérieur de ton réseau local.

  4. #4
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Sans oublier de donner la permission INTERNET à l'application
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi fichier txt via une socket Java
    Par abbesmor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/10/2013, 16h12
  2. Echange de fichier vidéo via une socket
    Par clemnantes dans le forum Réseau
    Réponses: 14
    Dernier message: 04/02/2010, 14h24
  3. Réponses: 7
    Dernier message: 14/05/2008, 21h50
  4. Réponses: 2
    Dernier message: 26/07/2007, 09h17
  5. [Tableaux] Envoyer de l'hexa via une socket PHP
    Par N3odyme dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2006, 19h34

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