PDA

Visualizza la versione completa : segnale dal server a utenti


zoc
20-09-2010, 13:05
Ciao a tutti.
Vi devo chiedere un consiglio.
Premetto che non ne so molto e mi vorrei documentare solo a livello concettuale.
Dovrei fare in modo che al segnale di un server, dei computer in locale facciano determinate cose. Mi chiedevo che tipo di connessione potevo usare... socket? ma quanti utenti regge?
Avevo pensato anche di fare partire la richiesta direttamente dai computer locali ogni tot secondi, per verificare una certa condizione, ma cosi ci sarebbe un consumo di risorse spropositato (banda ecc...).

grazie mille!

denis76
21-09-2010, 17:25
Potresti mandare un messaggio broadcast che viene catturato da tutti i pc oppure potersti aprire un socket nel server (principio della chat) che sostiene un numero illimitato di connessioni ai quali i client si collegato.
Se sei un po' pigro potresti condividere una cartella nel server. Se compare un tale file che i client controllano allora fai succedere qualcosa.

zoc
21-09-2010, 17:29
a ok perfetto... il socket può avere un numero illimitato di connessioni? :)
anche l'idea del file è buona, ma come fanno i client a controllare quando viene messo un nuovo file?

grazie mille!

denis76
21-09-2010, 18:12
Devi fare un controllo periodico.

zoc
21-09-2010, 18:16
e ma cosi facendo non vado a ciucciare un sacco di banda?
grazie!

Dark867
21-09-2010, 21:55
Il server suppongo sia http giusto?
Se il server è http allora c'è un problema di base legato all'essenza del protocollo http: il server non può mandare di propria iniziativa un messaggio al client, ma può farlo solo in caso di richiesta da parte di quest'ultimo. Un server http ti obbliga, in generale, a fare un polling (interrogazione) continuo da parte del client al fine di chiedere se ci sono aggiornamenti e questo, come hai già indovinato, è inefficiente se gli aggiornamenti lato server sono poco frequenti. C'è il vantaggio però che il server non deve mantenere strutture dati o in generale info sui client e quindi può sopportare tantissime connessioni.
Se decidi di non usare http ma un tuo protocollo che viaggia su TCP allora apri un canale permanente tra ogni client e il server e quindi il server può inviare su questo canale le info solo quando deve. Il problema è che mantenere un canale costa risorse e il server non potrà reggere tantissime connessioni inoltre sarà debole verso attacchi Denial Of Service da parte di hackers.

Ricapitolando:
HTTP:
pro: sicuro da attacchi DoS, tante connessioni.
contro: il client deve fare polling.

TCP:
pro: il client non deve fare polling.
contro: il server affoga se arrivano tante connessioni, devi creare un tuo protocollo o comunque trovarne uno esistente che si adatti a quello che vuoi fare.

Una buona alternativa potrebbero essere i nuovi metodi presenti in HTML5, websockets e reverse http, fai un po' di ricerca su google e troverai diversi esempi di come si usano.

zoc
22-09-2010, 11:01
grazie mille ragazzi per gli aiuti!!!
siete stati preziosi!

Loading