Bonjour tout le monde, j'ai un projet pour la fac a rendre en reseau mais je bloque a un endroit.
Dans mon programme j'envoie une chaine de caractere de la forme 42022:6:52:52:40:4525:25:48:1:20:31)
47:25:47:48:4:10) et qui represente les caracteristique d'un objet.
Les deux programmes interagissent en UDP, ils recoivent bien les chaine des caracteres envoyés par l'autre, mais la methode qui s'occupe de mettre les caracterisques dans un tableau plante.
fonction qui crée le tableau
fonction qui envoie et recoie la String
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public static int[] IPemonTabMaker(String StringIpemon) { int i=0; int T_IPm_stat[] = new int[18]; String S_IPemonData = StringIpemon; StringTokenizer st = new StringTokenizer(S_IPemonData, ":() "); while (st.hasMoreTokens()) { T_IPm_stat[i]=Integer.parseInt(st.nextToken()); i++; } return T_IPm_stat; }
fonction send et receive
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try{ String envoie =Ipemon.IPemonDataMaker(T_IPm[0]); send(envoie,portD); JTAInfo.append("Message envoyé : "+envoie+"\n"); received = receive();//receive est une String System.out.println("Message recu : "+received); JTAInfo.append("Message recu : " +received+"\n"); T_IPm[1]=new Ipemon(Ipemon.IPemonTabMaker(recu));
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 public void send(String s,int portD)throws IOException { bufR =s.getBytes();//private byte[] bufR = new byte[256]; packet = new DatagramPacket(bufR, bufR.length, address, portD); socket.send(packet); } public String receive()throws IOException { bufR = new byte[256]; packet = new DatagramPacket(bufR, bufR.length); socket.receive(packet); received = new String(packet.getData()); return received; }
J'obtiens
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:514)
at Ipemon.IPemonTabMaker(Ipemon.java:51
Mais quand je change
public String receive()throws IOException
en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 { bufR = new byte[256];//private byte[] bufR = new byte[256]; packet = new DatagramPacket(bufR, bufR.length); socket.receive(packet); received = new String(packet.getData()); return received; }
je n'ai plus l'erreur, mais la chaine de caractere est mal forme, vu que les numero quil composent sont tiré au hasard, elle a une taille qui varie, et donc jai la bonne String recu mais avec a la fin un morceau de la String envoyé, je sais pas si vous comprenez:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 { packet = new DatagramPacket(bufR, bufR.length); socket.receive(packet); received = new String(packet.getData()); return received; }
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Message envoyé : 210074:12:115:115:6:16:(13:36:21:37:33:33):(11:18:31:14:33:4) Message recu : 54589:10:97:97:28:43:(0:14:1:36:11:0):(11:45:36:32:29:43)3:4)
Partager