Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - ricezione stringhe tra client e server sbagliata
Forum - Java - ricezione stringhe tra client e server sbagliata

Avatar
Venerba Mirco (Member)
Rookie


Messaggi: 29
Iscritto: 01/08/2016

Segnala al moderatore
Postato alle 15:32
Martedì, 17/01/2017
se io ho :
Client.java
Codice sorgente - presumibilmente Java

  1. public class Client{
  2.     //variabili
  3.     private Scanner tastiera;
  4.     private DatagramSocket socketDelClient;
  5.     private InetAddress indirizzoIp;
  6.     private byte [] datiDaInviare;
  7.     private byte [] datiDaRicevere;
  8.     private DatagramPacket pacchettoDaInviare;
  9.     private DatagramPacket pacchettoDaRicevere;
  10.     private String fraseDaInviare="da inviare";
  11.     private String fraseDaRicevere="da ricevere";
  12.     //inizializzazione
  13.     public Client() throws Exception{
  14.         tastiera=new Scanner(System.in);
  15.         socketDelClient=new DatagramSocket();
  16.         //indirizzoIp=InetAddress.getByName("localhost");
  17.         indirizzoIp=InetAddress.getByName("localhost");
  18.         datiDaInviare=new byte[1024];
  19.         datiDaRicevere=new byte[1024];
  20.         pacchettoDaInviare=new DatagramPacket(datiDaInviare, datiDaInviare.length, indirizzoIp, 9800);
  21.         pacchettoDaRicevere=new DatagramPacket(datiDaRicevere, datiDaRicevere.length);
  22.     }
  23.     //programma
  24.     public void Programma() throws Exception{
  25.         while(true){
  26.             setFraseInInput();
  27.             setByteFraseInInput();
  28.             setDatagramPacket();
  29.             mandaPacchetto();
  30.             riceviPacchetto();
  31.             decodificaPacchetto();
  32.             if((new String(pacchettoDaInviare.getData())).trim().equals("0")){
  33.                 chiusuraDelClient();
  34.                 System.exit(0);
  35.             }
  36.         }
  37.     }
  38.     private void messaggioIniziale() throws Exception{
  39.         datiDaInviare="Entrato".getBytes();
  40.         setDatagramPacket();
  41.         mandaPacchetto();
  42.     }
  43.     private void decodificaPacchetto(){
  44.         fraseDaRicevere=new String(pacchettoDaRicevere.getData(), 0, pacchettoDaRicevere.getLength());
  45.         System.out.println("Frase inviata: "+new String(pacchettoDaInviare.getData()));
  46.         System.out.println("Frase ricevuta: "+fraseDaRicevere);
  47.         System.out.println();
  48.     }
  49.     private void mandaPacchetto() throws Exception{
  50.         socketDelClient.send(pacchettoDaInviare);
  51.     }
  52.     private void riceviPacchetto() throws Exception{
  53.         socketDelClient.receive(pacchettoDaRicevere);
  54.     }
  55.     private void setDatagramPacket(){
  56.         pacchettoDaInviare.setData(datiDaInviare);
  57.         pacchettoDaInviare.setLength(datiDaInviare.length);
  58.     }
  59.     private void setFraseInInput(){
  60.         System.out.print("Inserisci la frase: ");
  61.         fraseDaInviare=tastiera.nextLine();
  62.     }
  63.     private void setByteFraseInInput(){
  64.         datiDaInviare=fraseDaInviare.getBytes();
  65.     }
  66.     private void chiusuraDelClient(){
  67.         socketDelClient.close();
  68.     }
  69. }


Server.java
Codice sorgente - presumibilmente Java

  1. public class Server {
  2.     //variabili
  3.     private DatagramSocket socketDelServer;
  4.     private ArrayList<InetAddress> listaIndirizziIp=new ArrayList<InetAddress>();
  5.     private InetAddress indirizzoIp;
  6.     private byte [] datiDaInviare;
  7.     private byte [] datiDaRicevere;
  8.     private DatagramPacket pacchettoDaInviare;
  9.     private DatagramPacket pacchettoDaRicevere;
  10.     private String fraseDaRicevere;
  11.     private int porta;
  12.     //inizializzazione
  13.     public Server() throws Exception{
  14.         socketDelServer=new DatagramSocket(9800);
  15.         datiDaInviare=new byte[1024];
  16.         datiDaRicevere=new byte[1024];
  17.         pacchettoDaRicevere=new DatagramPacket(datiDaRicevere, datiDaRicevere.length);
  18.         pacchettoDaInviare=new DatagramPacket(datiDaInviare, datiDaInviare.length, indirizzoIp, porta);
  19.     }
  20.     //programma
  21.     public void Progamma() throws Exception{
  22.         while(true){
  23.             riceviPacchetto();
  24.             decodificaPacchetto();
  25.             setByteFraseInInput();
  26.             setDatagramPacket();
  27.         }
  28.     }
  29.     private void riceviPacchetto() throws Exception{
  30.         socketDelServer.receive(pacchettoDaRicevere);
  31.     }
  32.     private void decodificaPacchetto(){
  33.         fraseDaRicevere=new String(pacchettoDaRicevere.getData(), 0, pacchettoDaRicevere.getLength());
  34.         indirizzoIp=pacchettoDaRicevere.getAddress();
  35.         listaIndirizziIp.add(indirizzoIp);
  36.         porta=pacchettoDaRicevere.getPort();
  37.         System.out.println("Frase ricevuta dal client "+pacchettoDaRicevere.getAddress().toString()+": "+fraseDaRicevere);
  38.     }
  39.     private void mandaPacchetto() throws Exception{
  40.         socketDelServer.send(pacchettoDaInviare);
  41.     }
  42.     private void setByteFraseInInput(){
  43.         datiDaInviare=fraseDaRicevere.getBytes();
  44.     }
  45.     private void setDatagramPacket() throws Exception{
  46.         pacchettoDaInviare.setData(datiDaInviare);
  47.         pacchettoDaInviare.setLength(datiDaInviare.length);
  48.         for(int i=0; i<listaIndirizziIp.size(); ++i){
  49.             pacchettoDaInviare.setAddress(listaIndirizziIp.get(i));
  50.             pacchettoDaInviare.setPort(porta);
  51.             mandaPacchetto();
  52.         }
  53.     }
  54.     private void chiusuraDelServer(){
  55.         socketDelServer.close();
  56.     }
  57. }


per la pulizia del buffer
cosa posso fare?
grazie a chi mi risponde.

RISOLTO. GRAZIE LO STESSO

Ultima modifica effettuata da Venerba Mirco il 28/02/2017 alle 16:16


Venerba Mirco
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6100
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 4:05
Giovedì, 19/01/2017
Come hai risolto?


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
Venerba Mirco (Member)
Rookie


Messaggi: 29
Iscritto: 01/08/2016

Segnala al moderatore
Postato alle 16:15
Martedì, 28/02/2017
mettendo in ricezione sia nel server che nel client :
Codice sorgente - presumibilmente Java

  1. String a=new String(pacchettoDaRicevere.getData(), 0, pacchettoDaRIcevere.getLegth());


Ultima modifica effettuata da Venerba Mirco il 28/02/2017 alle 16:15


Venerba Mirco
PM Quote
Avatar
futshop (Normal User)
Newbie


Messaggi: 1
Iscritto: 29/03/2017

Segnala al moderatore
Postato alle 8:58
Mercoledì, 29/03/2017
okkkkkkkkkkkkkkkkkkkk

PM Quote