Newsgroup: it.comp.os.linux.development
Titolo: Testing di programmi multicast

Ho un dubbio, quando si testano programmi che usano socket internet si
usa il classico indirizzo di loopback 127.0.0.1. Mi chiedevo se questo 
indirizzo č utilizzabile per testare in locale anche programmi multicast.
Inoltre io dovrei utilizzare contemporaneamente nella stessa applicazione
piů gruppi multicast, in quest caso che indirizzi dovrei usare per le 
prove? esiste un solo indirizzo di loopback?
-- 
  _  _ >>Now on Linux<<  _     || ICQ number.................Non lo uso
 | \| |___ _____ ___ ___|_|___ || Home-Page ................Non ce l'ho
 | .` | -_|     | -_|_ -| |_ -||| E-Mail................Non l'avrai mai
 |_|\_|___|_|_|_|___|___|_|___||| Un Nemesis che ha pochi e-contatti ;)

 prove? esiste un solo indirizzo di loopback?
In realta' non devi usare l'indirizzo di loopback, ma uno o piu' indirizzi
di multicast.
Gli indirizzi di multicast si distinguono perche il primo byte e' 
maggiore o uguale a 224 (primi tre bit a uno).
Puoi avere piu' socket che ascoltano su uno o piu' gruppi di multicast.
Se vuoi usare piu' socket che ascoltano su gruppi di multicast diversi
ma sulla stessa porta, devi fare la bind all'indirizzo di multicast 
specifico (e fare comunque la join al gruppo).
Nota invece che non puoi ad esempio avere due applicazioni che ascoltano
contemporaneamente su stesso gruppo di multicast e stessa porta.
Spero di essere stato abbastanza esauriente
Saluti,
Fabio Lopiano
-- 
Posted from 
flopiano.mm.eutelsat.org
 [194.214.173.28] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ti ringrazio per l'esauriente risposta, in realta' non dovrei avere 
problemi per quanto riguarda i numeri di porto in quanto non creo 
direttamente le socket ma queste vengono create dalla libreria per l'RTP
che sto usando, e questa gestisce in automatico i numeri di porto.
Riassumendo posso usare un indirizzo qualsiasi, inoltre facendo un po'
di ricerche qua e la mi e' sembrato di capire che per mantenere il
flusso confinato nella sola mia macchina ed evitare che i pacchetti
vadano
in giro per tutta la lan devo settare il TTL a 0.
-- 
  _  _  >>Now at work<<  _     || ICQ number.................Non lo uso



Uhm, ho fatto delle prove ma ho un dubbio.
Come sai il pacchetto UDP deve contenere il numero di porto su cui e'
in ascolto il destinatario. Questo presuppone che io che spedisco
conosca
questo numero di porto, a questo punto le soluzioni sono 2
1) In qualche modo la destinazione mi deve comunicare su che porto
ascolta
Ma questo andrebbe contro il principio stesso del multicast,
destinaizioni
diverse potrebbero scegliere di ascoltare su porti diversi.
2) Tutti i partecipanti alla sessione ascoltano su uno stesso porto (che
quindi sarebbe caratteristico della sesisone), pero' ci vedo almeno 2 
problemi
    1- Chi mi assicura di trovare libero al momento della bind quel
porto?
    2- Due entita' non possono coesistere sulla stessa macchina (e
quindi
       addio alle prove in locale) perche' dovrebbero fare la bind sullo
       stesso porto.
Che ne pensate?
-- 
  _  _  >>Now at work<<  _     || ICQ number.................Non lo uso


        stesso porto.
Questo e' un altro classico problema quando si testano applicazioni 
multicast con poche macchine a disposizione..
Io generalmente uso una specie di multiplexer, cioe' un applicazione
che ascolta sulla porta in questione e ripete il messaggio su n porte.
Lancio poi gli n client su ognuna delle n porte su cui e' ripetuto
il messaggio.
Saluti
Fabio


 il messaggio.
?__?
Non ho capito bene come fai tu, fortunatamente io ho a disposizione una
Lan e diversi account su macchine diverse quindi provo in questo modo.


 Lan e diversi account su macchine diverse quindi provo in questo modo.
intendevo un programma che fa qualcosa del genere:
my_sock = MulticastSocket( mcast_addr , port )
while (1):
        message = my_sock.Receive()
        for p in ports:
                my_sock.SendTo( message , localhost , p )


       sullo stesso porto.
"emula" macchine multiple con porte multiple sulla stessa macchina. 
Credo sia l'unico modo
-- 
Nato nel vizio, morto nel supplizio
Nato nel peccato, ad entrare sia invitato