The Dark Side of Hardware Upgrade Forum

...bringing out the worst in you since 2003...
Oggi è mar ott 06, 2026 2:18 pm

Tutti gli orari sono UTC +1 ora


-->
-->

Apri un nuovo argomento Rispondi all’argomento  [ 33 messaggi ]  Vai alla pagina 1, 2  Prossimo
Autore Messaggio
 Oggetto del messaggio: Multicast
MessaggioInviato: mer giu 22, 2011 8:02 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
C'è qualche esperto di multicast qui ?
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 8:38 am 
Schiavo
Avatar utente
Iscritto il: dom lug 18, 2010 12:48 pm
Messaggi: 10811
Mh credo di no.... :look:
_________________
http://www.youtube.com/watch?v=AKgxlCIGqc8

Spoiler: show
Il Lonfo non vaterca né gluisce
e molto raramente barigatta,
ma quando soffia il bego a bisce bisce,
sdilenca un poco e gnagio s'archipatta.
È frusco il Lonfo! È pieno di lupigna
arrafferia malversa e sofolenta!
Se cionfi ti sbiduglia e ti arrupigna
se lugri ti botalla e ti criventa.
Eppure il vecchio Lonfo ammargelluto
che bete e zugghia e fonca nei trombazzi
fa legica busia, fa gisbuto;
e quasi quasi in segno di sberdazzi
gli affarferesti un gniffo. Ma lui, zuto
t' alloppa, ti sbernecchia; e tu l'accazzi.
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 8:40 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Sto smadonnando!!! :whistler:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:01 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Spiego il problema perché forse mi basta qualcuno esperto in sockets per risolverlo.

Se apro 2 applicazioni su 2 PC sulla porta 4000 che comunicano su 225.0.0.1, tutto funziona a meraviglia.
Se provo a fare un JoinMulticastGroup 225.0.0.2 porta 5000 non va niente perché, pare, se apri le applicazioni sulla porta 4000, quella puoi usare e basta.

Siccome ci servono più applicazioni sullo stesso PC, mi tocca aprirle tutte sulla porta 4000 e non ci riesco perché la porta, una volta aperta la prima applicazione, è busy.

Quindi: come cacchio faccio ad aprire più applicazioni che usano la stessa porta ?
ho già provato la socket option SO_REUSEADDRESS ma nada.
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:10 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
AFAIK non puoi, a meno di non usare un qualche "middleware" tra le tue applicazioni e la porta in questione (ed avere un modo per "distinguere" cosa va ad una e cosa all'altra). La bind() è il punto chiave della questione, se la usi (e DEVI), non puoi più usare la porta con un'altra applicazione.

SO_REUSEADDR e SO_REUSEPORT non fanno quello che ti aspetti.

Edito per chiarezza:
1. SO_REUSEPORT non c'è sotto linux, solo sotto *BSD, quindi non so se ti interessa.
2. SO_REUSEADDR ti permette di bindarti() ad un indirizzo/porta già bindato, SE questo è in TIME_WAIT. Se è in altro stato ti viene restituito un errore. Non c'è nulla di "contemporaneo", IIRC la vecchia applicazione che era in bind() sul socket viene "sbindata".
_________________
In Soviet Italy, the evil army owns you!


Ultima modifica di MadJackal, mer giu 22, 2011 9:25 am, modificato 1 volta.
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:23 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
AFAIK non puoi, a meno di non usare un qualche "middleware" tra le tue applicazioni e la porta in questione (ed avere un modo per "distinguere" cosa va ad una e cosa all'altra). La bind() è il punto chiave della questione, se la usi (e DEVI), non puoi più usare la porta con un'altra applicazione.

SO_REUSEADDR e SO_REUSEPORT non fanno quello che ti aspetti.

:whistler:


Grazie.

Ma quello che non capisco è perché non posso fare un join multicast address su una porta diversa. Cioè, posso usare UNA sola porta ???
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:31 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Eppure qui http://www.boost.org/doc/libs/1_42_0/do ... ceiver.cpp vedo:

Cita:
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:41 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:
Ma quello che non capisco è perché non posso fare un join multicast address su una porta diversa. Cioè, posso usare UNA sola porta ???


Mi pare che anche il multicast (UDP) necessiti di una dest port, o sbaglio? :roll:
Non prendermi sul serio, dovrei recuperare il manuale di reti e darci un occhio, ma ora sono in ufficio :whistler:
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:47 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
trallallero ? ha scritto:
Ma quello che non capisco è perché non posso fare un join multicast address su una porta diversa. Cioè, posso usare UNA sola porta ???


Mi pare che anche il multicast (UDP) necessiti di una dest port, o sbaglio? :roll:
Non prendermi sul serio, dovrei recuperare il manuale di reti e darci un occhio, ma ora sono in ufficio :whistler:

Allora, ho compilato il boost sender
http://www.boost.org/doc/libs/1_42_0/do ... sender.cpp
e il boost receiver
http://www.boost.org/doc/libs/1_42_0/do ... ceiver.cpp

Poi ho lanciato 2 clients e un server e funziona tutto like a charm!

Ora mi preparo ad entrare nel code dei boost guys, se non mi vedete nelle prossime 4-5 ore, venitemi cercare in qualche header file :aiuto:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:48 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Quello che ho notato è che solo i clients fanno la bind, non il sender.
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:52 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:
Eppure qui http://www.boost.org/doc/libs/1_42_0/do ... ceiver.cpp vedo:

Cita:
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));


Perchè non sono un esperto di multicast. Mi dicono dalla scrivania dietro la mia che in multicast il kernel dovrebbe consegnare il messaggio a tutti i processi in ascolto. Però devi mettere il setsockopt() con il SO_REUSEADDR prima della bind().

Se non ti funziona è perchè ricordo bene e SO_REUSADDR sotto linux è broken.
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 9:55 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Ieri ho visto che SO_REUSEPORT è deprecated su Linux, non SO_REUSEADDR.

Però vedo che i boost guys usano anche SO_BROADCAST.
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:02 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:
Ieri ho visto che SO_REUSEPORT è deprecated su Linux, non SO_REUSEADDR.


MI confondo sempre tra *BSD e linux, troppo abituato ad usare il primo.
Quelli di Linux hanno deprecato SO_REUSEPORT perchè era solo un modo di girare intorno ad alcune limitazioni di SO_REUSEADDR, che ora sotto linux non ci sono più.
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:04 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
trallallero ? ha scritto:
Ieri ho visto che SO_REUSEPORT è deprecated su Linux, non SO_REUSEADDR.


MI confondo sempre tra *BSD e linux, troppo abituato ad usare il primo.
Quelli di Linux hanno deprecato SO_REUSEPORT perchè era solo un modo di girare intorno ad alcune limitazioni di SO_REUSEADDR, che ora sotto linux non ci sono più.

Ah ecco.

Comunque non ne vengo fuori... devo solo controllare questa manciata di files :okay:

#include <boost/asio/basic_datagram_socket.hpp>

#include <boost/asio/basic_deadline_timer.hpp>

#include <boost/asio/basic_io_object.hpp>

#include <boost/asio/basic_raw_socket.hpp>

#include <boost/asio/basic_serial_port.hpp>

#include <boost/asio/basic_socket_acceptor.hpp>

#include <boost/asio/basic_socket_iostream.hpp>

#include <boost/asio/basic_socket_streambuf.hpp>

#include <boost/asio/basic_stream_socket.hpp>

#include <boost/asio/basic_streambuf.hpp>

#include <boost/asio/buffer.hpp>

#include <boost/asio/buffered_read_stream_fwd.hpp>

#include <boost/asio/buffered_read_stream.hpp>

#include <boost/asio/buffered_stream_fwd.hpp>

#include <boost/asio/buffered_stream.hpp>

#include <boost/asio/buffered_write_stream_fwd.hpp>

#include <boost/asio/buffered_write_stream.hpp>

#include <boost/asio/buffers_iterator.hpp>

#include <boost/asio/completion_condition.hpp>

#include <boost/asio/datagram_socket_service.hpp>

#include <boost/asio/deadline_timer_service.hpp>

#include <boost/asio/deadline_timer.hpp>

#include <boost/asio/error.hpp>

#include <boost/asio/handler_alloc_hook.hpp>

#include <boost/asio/handler_invoke_hook.hpp>

#include <boost/asio/io_service.hpp>

#include <boost/asio/ip/address.hpp>

#include <boost/asio/ip/address_v4.hpp>

#include <boost/asio/ip/address_v6.hpp>

#include <boost/asio/ip/basic_endpoint.hpp>

#include <boost/asio/ip/basic_resolver.hpp>

#include <boost/asio/ip/basic_resolver_entry.hpp>

#include <boost/asio/ip/basic_resolver_iterator.hpp>

#include <boost/asio/ip/basic_resolver_query.hpp>

#include <boost/asio/ip/host_name.hpp>

#include <boost/asio/ip/icmp.hpp>

#include <boost/asio/ip/multicast.hpp>

#include <boost/asio/ip/resolver_query_base.hpp>

#include <boost/asio/ip/resolver_service.hpp>

#include <boost/asio/ip/tcp.hpp>

#include <boost/asio/ip/udp.hpp>

#include <boost/asio/ip/unicast.hpp>

#include <boost/asio/ip/v6_only.hpp>

#include <boost/asio/is_read_buffered.hpp>

#include <boost/asio/is_write_buffered.hpp>

#include <boost/asio/local/basic_endpoint.hpp>

#include <boost/asio/local/connect_pair.hpp>

#include <boost/asio/local/datagram_protocol.hpp>

#include <boost/asio/local/stream_protocol.hpp>

#include <boost/asio/placeholders.hpp>

#include <boost/asio/posix/basic_descriptor.hpp>

#include <boost/asio/posix/basic_stream_descriptor.hpp>

#include <boost/asio/posix/descriptor_base.hpp>

#include <boost/asio/posix/stream_descriptor.hpp>

#include <boost/asio/posix/stream_descriptor_service.hpp>

#include <boost/asio/raw_socket_service.hpp>

#include <boost/asio/read.hpp>

#include <boost/asio/read_at.hpp>

#include <boost/asio/read_until.hpp>

#include <boost/asio/serial_port.hpp>

#include <boost/asio/serial_port_base.hpp>

#include <boost/asio/serial_port_service.hpp>

#include <boost/asio/socket_acceptor_service.hpp>

#include <boost/asio/socket_base.hpp>

#include <boost/asio/strand.hpp>

#include <boost/asio/stream_socket_service.hpp>

#include <boost/asio/streambuf.hpp>

#include <boost/asio/time_traits.hpp>

#include <boost/asio/version.hpp>

#include <boost/asio/windows/basic_handle.hpp>

#include <boost/asio/windows/basic_random_access_handle.hpp>

#include <boost/asio/windows/basic_stream_handle.hpp>

#include <boost/asio/windows/overlapped_ptr.hpp>

#include <boost/asio/windows/random_access_handle.hpp>

#include <boost/asio/windows/random_access_handle_service.hpp>

#include <boost/asio/windows/stream_handle.hpp>

#include <boost/asio/windows/stream_handle_service.hpp>

#include <boost/asio/write.hpp>

#include <boost/asio/write_at.hpp>
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:04 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
Prova ad usare SO_REUSEADDR e SO_BROADCAST.
Già fatto sto test?
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:13 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
Prova ad usare SO_REUSEADDR e SO_BROADCAST.
Già fatto sto test?

No, ma mi sa che mi sono confuso su sto SO_BROADCAST, non so se veramente lo usano sti stronzi.

In pratica devo capire cosa fanno qui:

Codice:
boost::asio::ip::udp::endpoint listen_endpoint(listen_address, multicast_port);
socket_.open(listen_endpoint.protocol());
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));
socket_.bind(listen_endpoint);

// Join the multicast group.
socket_.set_option(boost::asio::ip::multicast::join_group(multicast_address));

_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:39 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
http://linux.die.net/man/7/ip

Cita:
Datagrams to broadcast addresses can be only sent or received when the SO_BROADCAST socket flag is set. In the current implementation connection oriented sockets are only allowed to use unicast addresses.


A me sa proprio che lo usano, almeno stando a man 7 ip :awesome:
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:45 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
http://linux.die.net/man/7/ip

Cita:
Datagrams to broadcast addresses can be only sent or received when the SO_BROADCAST socket flag is set. In the current implementation connection oriented sockets are only allowed to use unicast addresses.


A me sa proprio che lo usano, almeno stando a man 7 ip :awesome:

Si ma broadcast <> multicast.


Comunque ora ci si mette anche ubuntu, diolinux :whistler:

Cita:
./jackd -d alsa -r48000 -p1024 -S -n3
the playback device "hw:0" is already in use. Please stop the application using it and run JACK again


NON C'È NIENTE CHE USA LA hw:0! HO KILLATO TUTTO :muro:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:47 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Era virtual box :vabe:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 10:56 am 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:
Si ma broadcast <> multicast.


My fault, sto fondendo a causa di file system che esplodono e alert che suonano come battone. :whistler:
E quelle puttane degli sviluppatori chiedono pure i log! :whistler:
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 12:28 pm 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
Ok, funge.

Praticamente era il SO_REUSECOSO ma non avevo pensato che, usando il mio RTP plugin, se ne aprono 2 di socket (rtp e rtcp) e l'option va messa ad entrambi.

Grazie MadJackal

Thanks boost :ave:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 12:53 pm 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:

Grazie MadJackal


Ecco, ringrazia boost, che io ho failato su tutta la linea confondendo TCP ed UDP :LOL:
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 1:01 pm 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
MadJackal ? ha scritto:
trallallero ? ha scritto:

Grazie MadJackal


Ecco, ringrazia boost, che io ho failato su tutta la linea confondendo TCP ed UDP :LOL:

Vabbè ma sei stato utile lo stesso. Hai presente il "debug confessionale" ? :asd:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 1:05 pm 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
La cosa più bella è che emailando con Jori (autore delle jrtplib) alla fine avevo ragione io 8)
Lui continuava a dire che la sua libreria non aveva bug, che non potevo aprire più applicazioni per colpa del SO, invece...
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Multicast
MessaggioInviato: mer giu 22, 2011 2:21 pm 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
trallallero ? ha scritto:
La cosa più bella è che emailando con Jori (autore delle jrtplib) alla fine avevo ragione io 8)
Lui continuava a dire che la sua libreria non aveva bug, che non potevo aprire più applicazioni per colpa del SO, invece...


Il tuo scenario è troppo raro, se usi un socket TCP/UDP unicast ha ragione lui. :asd:
Il problema è il multicast, che fa così cagare che non usa nessuno.

:trollface:
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 33 messaggi ]  Vai alla pagina 1, 2  Prossimo
-->

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Vai a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it