[PD-dev] netreceive: listen failed: Address already in use

IOhannes m zmölnig zmoelnig at iem.at
Sat Feb 27 21:17:22 CET 2021


Am 27. Februar 2021 19:22:26 MEZ schrieb Pierre Guillot <guillotpierre6 at gmail.com>:
> 
> Is it normal?
> 

yes.
this is how networking works.
only a single listener on any given port pet interface.


> I managed to solve this problem by replacing SO_REUSEADDR to
> SO_REUSEPORT
> on the function socket_set_boolopt() (l. 703 of x_net.c). I don't know
> much
> about sockets but I understand that it allows two [netreceive] objects
> to
> use the same address AND the same port. Do you think this is a proper
> way
> of fixing this problem? 

no it's not.
as you've already discovered, this is not supported on all platforms, and those platforms that do support SO_REUSEPORT, can (and do) implement it very differently.
in most cases it will allow you to bind to the same port multiple times, but you will not receive data on all clients.

https://stackoverflow.com/a/14388707

one possible fix for this is to have a single socket that binds to the port, that serves all `[netreceive]` instances (using that port). this obviously canbonly work if all `[netreceive]` instances live in the same application.

you might also have luck with multicast.


mfg.hft.fsl
IOhannes




More information about the Pd-dev mailing list