Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Socket TCP

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Il codice non è proprio molto buono per diversi motivi. Ma andiamo con ordine. Innanzitutto quando si usano gli ObjectOutputStream/ObjectInputStream così e specialmente con i socket, la creazione di questi oggetti andrebbe fatta "incrociata". Se il server prima crea ObjectOutputStream e poi ObjectInputStream, il client dovrebbe invertire cioè prima creare ObjectInputStream e poi ObjectOutputStream.
    Questo perlomeno per evitare potenziali blocchi, perché il costruttore di ObjectOutputStream scrive già sullo stream come prima cosa il "header" della serializzazione e se dall'altra parte viene anche inviato lo stesso header, ci potrebbe essere un "deadlock".

    Come seconda cosa, quando si usano i socket e ci si vuole assicurare che l'invio dei dati avvenga davvero sul socket, è sempre bene fare un "flush" dopo la scrittura con il writeXXX o quello che usi.

    Come terza cosa (che non è facilmente evidente dal codice perché è un concetto della serializzazione!) c'è un problema legato a come la serializzazione gestisce gli oggetti. La serializzazione applica "di serie" un meccanismo di "caching" degli oggetti.
    Dato che nel client viene istanziato l'oggetto array (con new int[2]) una volta sola prima del ciclo, l'oggetto che invii è sempre lo stesso identico array a cui viene solo cambiato il contenuto. Ma il caching degli oggetti causa un problema. Al primo ciclo sarebbe tutto ok ma dal secondo ciclo in poi ti accorgeresti che con altri dati il risultato non è più quello che ti aspetti.
    Ultima modifica di andbin; 15-10-2017 a 11:17
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.