2010-07-01 18 views
6

Imparare le tecnologie java server, cercando di chiarire alcune cose. Esistono poche tecnologie che consentono alle applicazioni java di comunicare tra loro.In che modo il server può inviare dati al client?

1) servizi Web (REST/SOAP) oltre http

2) POST Semplice/GET utilizzando URLConnection su HTTP.

3) prese

4) RMI = Sockets + serializzazione degli oggetti + alcune utilità

5) Diversi media server come red5 = RTMP o RTMPT

Tutte queste tecnologie per scontato che ci sia un server applicazione e client. L'applicazione client conosce l'indirizzo del server e dovrebbe essere l'iniziatore della chiamata. E per quanto ho capito ci sono ora per il server per spingere i dati al client, egli può solo inviare i dati indietro come risposta al client. Ed è possibile, se solo cambiano i loro ruoli, in questo caso il server dovrebbe conoscere l'IP del client.

Quindi mi chiedo come funzionano i giochi di rete? È possibile aprire la connessione e scambiare dati tra server e client per tutto il tempo senza richiedere una richiesta dal client ogni 1-2 secondi e il server non conoscerebbe l'IP del client. Non sto parlando di Comet e altri hack.

Grazie

risposta

6

maggior parte a due vie, applicazioni persistenti aprire una porta di rete e tenerlo aperto. Il server ascolta su una porta ben nota e quando un client si connette a quella porta, ottiene una connessione TCP permanente al server. Una connessione del genere è fondamentalmente un "tubo" bidirezionale, i dati possono scorrere in serie in entrambe le direzioni contemporaneamente. Finché quella pipe è aperta, il server ascolta i messaggi dal client e il client ascolta i messaggi dal server.

Le API I/O comuni utilizzate per i pipe TCP consentono di "riattivare" entrambe le estremità della connessione: una richiesta I/O asincrona esegue una funzione di callback registrata da un thread gestito dal sistema operativo o dalla libreria I/O oppure il client/server lega il proprio thread su una chiamata "bloccante", che ritorna quando i dati sono disponibili. Nessun tentativo di polling o riconnessione è necessario con questo modello, il client e il server "sanno" quando i dati sono disponibili e possono agire immediatamente.

+2

Anche i giochi di rete in tempo reale spesso "imbrogliano" un po '. Ogni client aggiorna il mondo localmente in tempo reale e fa qualche trucco per risincronizzare la simulazione condivisa quando arriva un nuovo aggiornamento dal server. Quando spari al tuo nemico potrebbe essere lui schivare il tuo colpo ottenendo solo un piccolo danno o potrebbe non esserlo. Ovviamente è il server che deciderà in modo imparziale a seconda che il comando schivata di quel cliente sia arrivato prima o dopo lo sparo ... ma il giocatore attaccante probabilmente non noterà un'eventuale incongruenza tra l'animazione 3d mostrata e il numero di energia barre sottratte. – 6502

Problemi correlati