Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-06-2010, 08:55   #1
moriero
Member
 
Iscritto dal: Nov 2004
Messaggi: 88
[JAVA] applicazione client/server scambio messaggi

Ciao a tutti, sto realizzando una piccola applicazione client/server in java
per un sistema di prenotazione.
In pratica ho immaginato che il client per inviare richieste per la prenotazione
invii al server un oggetto "messageObject" con settati i parametri scelti
dall'utente attraverso un interfaccia grafica.
per inviare i messaggio al server faccio una

Codice:
outputStream.writeObject(messageObject);
e dove outputStream è così definito:
Codice:
outputStream = new ObjectOutputStream(socket.getOutputStream());

quanto ho fatto è corretto??

Un'altra cosa ,è più corretto
1)istanziare un nuovo messageObject ogni volta che c'è una richiesta dal Client verso il server

oppure

2)modificare lo stato di messageObject con dei metodi setter,in modo da preparare il messaggio per la nuova richiesta e inviare il tutto?
Se è corretto il caso 2 anche il server può settare il messggio in modo da fornire una risposta al client oppure dovrà creare un nuovo messageObject?

Grazie
moriero è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2010, 09:43   #2
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
Premesso che secondo me sei perfettamente in linea, ti posso dire due o tre spunti interessanti.

1) Hai mai visto RMI? Invece di costruire un oggetto (che implementa serializable naturalmente) lato client, gestirti tu le socket per l'invio e la ricezione (ricordati che se il client crasha, alt+f4, gli stacchi la lan, il thread sul server che gestiva quella particolare comunicazione non se ne accorge, quindi dovresti implementare un sistema di "ping", ad es ogni tot tempo il server a sua volta manda un messaggio al client per verificare se c'è ancora e prima di fare la read della risposta setti un timeout su quell'ulteriore socket?) etc etc, con RMI puoi chiamare direttamente un metodo del server come se fosse locale. Quindi, metti che sul server hai doStuff(MessageObject messageObject) che chiami dal thread che gestisce la socket con client, una volta che il client ha inviato il messageObject, puoi chiamare doStuff(messageObject), metodo del server, direttamente dal client.

2) E' possibile una gestione della messaggistica tramite JMS? Anche questo ti semplifica notevolmente la parte di comunicazione client/server, socket e quant'altro, e ti assicuro che è estremamente facile da implementare.
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2010, 13:13   #3
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Aggiungo che se si ipotizza di usare RMI, allora darei un'occhiata anche a Hessian (http://hessian.caucho.com/)

Facile quanto RMI, anzi forse di più perché non c'è da impostare Java Security ed è multipiattaforma.
Esempio io l'ho usato per invocare metodi remoti Java da un client C#.

L'unico lato negativo è che quasi tutti gli esempi che troverai richiedono un servlet container (se la tua applicazione server gira dentro un TomCat/JBoss/Glashfish sei già a posto).
Hessian si può usare anche senza ma diventa più complicato da gestire (e troverai pochi esempi che spiegano come), io alla fine per fare prima ho usato Jetty come servlet container embedded nella mia applicazione.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v