PROBLEMA Non riesco a mandare più di tot. messaggi attraverso un socket java

Pubblicità

JDany

Utente Attivo
Messaggi
467
Reazioni
24
Punteggio
46
Salve. Il mio errore si manifesta quando mando due messaggi attraverso il socket, ad esempio:
Java:
// ServerSocket in ascolto
Socket socket = serverSocket.accept();

try
{
    OutputStream out = socket.getOutputStream();

    String message1 = "Prova 1";
    String message2 = "Prova 2";
    String message3 = "Prova 3";
    
    out.write(message1.getBytes()); // arriva
    out.flush();
    
    out.write(message2.getBytes()); // arriva
    out.flush();
    
    out.write(message3.getBytes()); // non arriva
    out.flush();
}
catch (Exception e)
{
    e.printStackTrace();
}

Sto sviluppando una chat per l'esame, e come endpoint c'è un websocket (ovviamente i messaggi vengono mandati correttamente), ma anche se arrivano correttamente comunque il terzo messaggio non arriva.
Come posso risolvere? Grazie in anticipo.
 
Sono un pò arrugginito con Java, su due piedi non mi vengono in mente soluzioni; dipende come hai realizzato client-server.
Puoi postare il codice completo?
 
Sono un pò arrugginito con Java, su due piedi non mi vengono in mente soluzioni; dipende come hai realizzato client-server.
Puoi postare il codice completo?
Tutto il codice è un problema, però ti posso linkare dove è il problema.
L'errore è in questo file: https://github.com/J-Dany/Chat/blob/master/server/src/main/java/Chat/server/ClientConnection.java alle linee 82, 83 (ovviamente la 82 non è commentata, lo è su github perché ancora non ho fatto il commit delle nuove modifiche).

Comunque cerco di descrivere il comportamento che dovrebbe avere l'applicazione:
  • Il client si collega al ServerSocket
  • Il server accetta la connessione e per stabilire la connessione rimanda il pacchetto HTTP con 101 Switching Protocols e altri header necessari al websocket
  • Una volta stabilita la connessione, il client mostra il form di login
  • L'utente immette i propri dati, invia un json al server contenente i dati necessari al login
  • Il server riceve il json, prende i dati necessari e lo autentica (consideriamo il login corretto)
  • Il server risponde mandando un json contente la risposta del login, dopodiché invia la lista degli amici e notifica ai suoi amici online l'avvenuta connessione
Posto uno screenshot di quello che ricevo:
Cattura.PNG
Come si può vedere, io mi sono loggato con J_Dany, ricevo la lista degli amici. Dopodiché l'utente MRossi si logga, quindi anche lui riceve il messaggio di login ok e riceve la lista degli amici; una volta ricevuti i dati notifica a me (J_Dany) che lui (MRossi) si è connesso.
Tra l'altro mi ero dimenticato inoltre di dire che tutti i messaggi arrivano correttamente tranne il terzo che Chrome dice che arriva mascherato quando non lo è.

Riattacondomi al primo messaggio di questo thread: il server manda 2 messaggi a MRossi e il terzo messaggio, che viene mandato ad un altro, non viene ricevuto o comunque arriva corrotto. Il socket connesso a J_Dany non può mandare più di 2 messaggi.
 
Pubblicità
Pubblicità
Indietro
Top