Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-06-2013, 15:00   #1
ciccionamente90
Senior Member
 
L'Avatar di ciccionamente90
 
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
[JAVA] Socket multithread -- distinguere i client

Buongiorno. Sono alle prese col socket multithread.
Banalmente ho e.g. tre client che si connettono al server ed essi sono in grado d'inserire una stringa, la quale verrà salvata nella "logica" del server. Ogni client - inoltre - è in grado di leggere l'ultima stringa scritta dagli altri client.

Se e.g. io sono il client2 posso inserire una stringa e "contemporaneamente vedere la (ultima) stringa inserita dal client1 e quella inserita dal client3.

Il mio problema è che non riesco a distinguere da quale specifico client proviene una stringa -- in modo tale da salvarla in una variabile String dedicata appunto a tale client.
C'è quindi modo di distinguere i client (sul lato server)?
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB
HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser
ciccionamente90 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2013, 17:02   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da ciccionamente90 Guarda i messaggi
Buongiorno. Sono alle prese col socket multithread.
Banalmente ho e.g. tre client che si connettono al server ed essi sono in grado d'inserire una stringa, la quale verrà salvata nella "logica" del server. Ogni client - inoltre - è in grado di leggere l'ultima stringa scritta dagli altri client.

Se e.g. io sono il client2 posso inserire una stringa e "contemporaneamente vedere la (ultima) stringa inserita dal client1 e quella inserita dal client3.

Il mio problema è che non riesco a distinguere da quale specifico client proviene una stringa -- in modo tale da salvarla in una variabile String dedicata appunto a tale client.
C'è quindi modo di distinguere i client (sul lato server)?
Basta che il server ad ogni thread (e quindi ad ogni client) assegni (quindi gli passa come parametro) un identificativo univoco.
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2013, 19:55   #3
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
La connessione come funziona? I client si connettono più volte nel tempo? Oppure si apre la connessione, si fanno le operazioni, si chiude e stop?
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2013, 19:58   #4
ciccionamente90
Senior Member
 
L'Avatar di ciccionamente90
 
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
Sì, infatti poi ho risolto così. Speravo esistesse un modo più pulito.
In pratica nel server ho messso:
Codice:
	private static int contatore=1; //idClient

	static void incrementaContatore(){
		setContatore(getContatore()+1);

	public static int getContatore() {
		return contatore;
	}

	public static void setContatore(int contatore) {
		MultiServer.contatore = contatore;
	}
Mentre nel codice di generazione dei thread:
Codice:
    private static int identificatore;
    
    public MultiServerThread(Socket socket, int idClient) {
	super("MultiServerThread");
	this.socket = socket;
	MultiServerThread.setIdentificatore(idClient);
		MultiServer.incrementaContatore();
    }
	public static int getIdentificatore() {
		return identificatore;
	}
	public static void setIdentificatore(int identificatore) {
		MultiServerThread.identificatore = identificatore;
	}
La logica la chiamo in questo modo:
Codice:
	    Protocol p = new Protocol(identificatore);
La quale implementa:
Codice:
    int id;
    
	Protocol(int identificatore){
		this.id=identificatore;
    }
Così da poter effettuare una distinzione.

Una curiosità: in programmi più complessi l'unico modo per chiamare metodi del server tramite socket è quello di utilizzare codici univoci i quali vengono verificati tramite una serie di switch (serializzando i parametri da passare)? Oppure esiste un modo più elegante?
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB
HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser
ciccionamente90 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2013, 19:59   #5
ciccionamente90
Senior Member
 
L'Avatar di ciccionamente90
 
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
Quote:
Originariamente inviato da pabloski Guarda i messaggi
La connessione come funziona? I client si connettono più volte nel tempo? Oppure si apre la connessione, si fanno le operazioni, si chiude e stop?
I client possono connettersi in qualsiasi momento e la connessione rimane costantemente aperta.
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB
HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser
ciccionamente90 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2013, 08:55   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ciao ciccionamente90, cosa succede se capita che due client diversi si connettono più o meno nello stesso momento?
Succede che potrebbe capitare che due thread client vengano creati con lo stesso id perchè l'accesso in lettura e scrittura al campo "contatore" non è sincronizzato tra i thread (data race).

Soluzione rapida?
Dichiara i metodi incrementaContatore getContatore setContatore col modificatore synchronized.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 07-06-2013 alle 08:57.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2013, 10:01   #7
ciccionamente90
Senior Member
 
L'Avatar di ciccionamente90
 
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
Grazie mille per la dritta. Sistemo asap.

EDIT
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB
HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser

Ultima modifica di ciccionamente90 : 09-06-2013 alle 21:20.
ciccionamente90 è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2013, 21:31   #8
ciccionamente90
Senior Member
 
L'Avatar di ciccionamente90
 
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
Ragazzi, avrei un'ultima domanda. In questo caso il server è "stupido", nel senso che esegue la stessa azione a prescindere dal client. Ma come posso fare per far si che il server invii una determinata informazione (e.g. un oggetto serializzato) ad uno specifico client?

i.e. ho i thread dei socket che rimangono costantemente aperti e vorrei che il server passi un messaggio ad uno solo di questi thread -- come se volessi implementare il gioco della "patata bollente": il server numera i thread da 1 a 5 e i client sanno di essere in cinque. Un client scrive un messaggio con un destinatario (un numero da 1 a 5). Il server lo recapita al destinatario e quest'ultimo esegue la stessa procedura.

Spero che mi possiate aiutare, grazie in anticipo.

Non m'interessa tanto l'implementazione del messaggio, bensì la procedura che attua il server per instradare - univocamente - il messaggio stesso.
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB
HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser
ciccionamente90 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
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: 20:42.


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