Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Stringhe e Java Socket!
Forum - Java - Stringhe e Java Socket!

Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 22:22
Lunedì, 30/03/2009
Ciao a tutti, avrei bisogno di aiuto su una cosa che penso sia semplice, ma alla quale non sono riuscito a trovare soluzione! :pat:

Ho scritto sia un Server UDP che un Client UDP,ho la necessità di inviare un oggetto String dal Client Al Server...

Converto l'oggetto String in un array di bytes,e invio il DatagramPacket al Server, che lo riceve correttamente,però con un errore!

Se invio la stringa "ciao", sul server arriva come "ciao@@@@@@@@@@@@@@@@@....",dove @@@ sono tanti spazi vuoti.

Di certo dipende dal codice qua sotto, ovvero dalla dimensione del buffer per leggere il pacchetto in ingresso (questa è la funzione del server che ritorna un array di bytes con i dati)...


Codice sorgente - presumibilmente Java

  1. public byte[] receivePacketFromClient() throws IOException
  2.     {
  3.         byte[] buffer = new byte[1024];
  4.         DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
  5.         server_socket.receive(packet);
  6.         return packet.getData();
  7.     }



Ora la domanda!
Mi potreste dare un consiglio su come elaborare i dati in ingresso, magari attraverso una funzione simile?
Grazie!

PseudoCodice
Codice sorgente - presumibilmente Java

  1. public byte[] CleanData (byte[] rawdata)
  2. {
  3.   //Codice per pulire l'array, ovvero eliminare i byte
  4.  //che nella conversione a String vengono contati come spazi
  5.  
  6. etc.
  7. }


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 6:32
Mercoledì, 01/04/2009
Io proverei:

Codice sorgente - presumibilmente Java

  1. public String receivePacketFromClient() throws IOException
  2.     {
  3.         byte[] buffer = new byte[1024];
  4.         DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
  5.         server_socket.receive(packet);
  6.  
  7.         return new String(packet.getData());
  8.     }
  9.  
  10. //...
  11.  
  12. //Dal chiamante:
  13. System.out.println(receivePacketFromClient());





Il mio blog: https://piero.dev
PM Quote