Bonjour,
Pour mon application je dois envoyer un objet par le biais d'une socket, pour cela je le serialise. Mon objet semble bien partir (pas d'erreur du coté du client android) cependant a la réception sur le serveur (Java sur pc) j'ai l'erreur "invalid type code: 00". Je ne trouve pas grand chose comme info sur celle ci. A par que ce serait un problème lié a la sérialisation. Avec un code identique du client sur le pc (java) je n'ai aucun soucis. Pourriez vous m'aiguiller et me dire ce qui cloche ?
L'asyncTask qui envoie
Ma classe serialisé:
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 public class Client extends AsyncTask<Void,Void,Void>{ @Override protected Void doInBackground(Void... params) { try { PositionGps pos2 = new PositionGps(); InetAddress serverAddr = InetAddress.getByName("192.168.2.16"); String msg = text.getText().toString(); clientSocket = new Socket(serverAddr, 4444); ObjectOutputStream oos = new ObjectOutputStream(clientSocket.getOutputStream()); oos.writeObject(pos2); oos.flush(); //oos.close(); } catch (IOException e) { e.printStackTrace(); } return null; } }
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 public class PositionGps implements Serializable{ public static final long serialVersionUID = 0xBADA55; private double latitude; private double longitude; public PositionGps(/*long lat, long longi*/){ //this.latitude = lat; //this.longitude = longi; } private void writeObject(ObjectOutputStream out){ try { this.setLongitude(10000); this.setLatitude(25000); out.writeDouble(this.getLatitude()); out.writeDouble(this.getLongitude()); } catch (IOException e) { e.printStackTrace(); } } private void readObject(ObjectInputStream in){ try { this.setLatitude(in.readDouble()); this.setLongitude(in.readDouble()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public double getLatitude(){ return this.latitude; } public void setLatitude(double latitude){ this.latitude = latitude; } public double getLongitude(){ return longitude; } public void setLongitude(double longi){ this.longitude = longi; } } Classe serveur:Merci de votre aide
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 Socket client = null; ServerSocket server= null; PositionGps pos = null; try{ server = new ServerSocket(4444); System.out.println("Server Started..."); //client = server.accept(); }catch(Exception e){ } try { while(true){ client = server.accept(); //in = new BufferedReader(new InputStreamReader(client.getInputStream())); ObjectInputStream in1= new ObjectInputStream(client.getInputStream()); //String distant = in.readLine(); try{ pos = (PositionGps)in1.readObject(); }catch(StreamCorruptedException e){ System.out.println(e); } System.out.println("latitude:"+pos.getLatitude()); System.out.println("longitude: "+pos.getLongitude()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { client.close(); server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Partager