Newsgroup: it.comp.java
Titolo: TCP/IP problemi

Salve
Sto sviluppando una applicazione in multi-utenza 3D. In
sostanza una sorta di villaggio 3D nei quali gli
utenti si possono vedere e addirittura dove si può creare
una propria casa virtuale.
Utilizzo VRML  e Java per la parte di Networking.
Vorrei chiedervi aiuto per alcuni problemi che sto
sperimentando. Faccio presente che tutti i messaggi sono
spediti su un socket TCP/IP. Il server apre n connessioni
con gli n clients (un thread per ogni client che si
connette). Tutti i clients condividono la stessa porta...
diversi sockets sul server ovviamente.
1) quando un utente lento entra nell'applicazione, sembra
che tutti gli altri clients rallentino alla sua velocità.
    E' possibile che avvenga qualcosa del genere: ?
      - il server cerca di trasmettere un mesaggio a quello
lento... ci vuole più tempo per mettersi in comunicazione
        con lui e questo di fatto tiene bloccata la porta di
comunicazione a lungo... bloccando di fatto i messaggi
        in uscita per gli altri clients...
      Non mi è molto chiaro come funziona il meccanismo...
quando faccio una write sullo stream di uscita
      associato al socket, il messaggio parte
istantaneamente e la porta è pronta a trasmettere altri
messaggi,
      oppure si ha una sorta di negoziazione con il client
che tiene occupata la porta sino a quando non si ha la
      certezza che il messaggio è stato ricevuto?
      Avete qualche idea? e sapreste come risolvere la cosa?
2) I messaggi di posizione generati sono molti, molto più
che non quelli di chat. Se una persona si muove,
    genera molti messaggi e questo ritarda di molto la
spedizione dei messaggi testuali. A parte diminuire i
messaggi
    al secondo generati, dovrei trovare una soluzione....
    ogni nuova posizione generata viene mandata al server e
da qui propagata a tutti gli altri clients.
   Credo che quando il server riceva molti messaggi (più di
quanti ne possa trasmettere) li accodi in un buffer...
quando
    il buffer è pieno? si blocca e rimane in attesa che si
liberi spazio?
    Dato che l'ultima posizione è quella che ha senso (e si
potrebbero cancellare le precedenti) è possibile accedere
    a questo buffer (o ai messaggi di posizione non ancora
spediti) per cancellarli e mettere solo l'ultima posizione
    ricevuta?
Conoscete qualche documento in linea o tutorial che spieghi
a fondo i meccanismi di comunicazione TCP/IP o UDP?
Grazie a quanti vorranno rispondere.
bye
--
\/irtual |\/|ad
Ignazio Locatelli - ICQ Number: 14462217
Multimedia and 3D Web Solutions:
http://www.computerstore.it/3dworld
VRML DREAMERS: 
http://www.lucia.it/vrml
3D Village - MultiUser vrml worlds:
http://www.radionav.it/3DVillage/3DVillage.html

 una propria casa virtuale.
Bello, mi dai l'indirizzo ?

-- 
	!!!  Nota bene: Il millennio inizzia il 1 GENNAIO 2001 !!!
		- campagna contro la disinformazione sul 
		  calendario gregoriano -

Ciao Giovanni.
Cosa sono gli RFC?
le ipotesi che faccio sui rallentamenti sono corrette?
quando spedisco un messaggio su un BufferedOutputStream associato ad un
socket, la scrittura è immediata
(cioè la routine che lo fa ritorna immediatamente) anche se faccio il
flush() oppure il flush() la pone in attesa fino
a quando non è stato spedito il messaggio?
grazie e ciao.
