Use getsockname(2) to determine actual port when listening on :0
Author: mochaaPCreated May 29, 2020Updated Jun 17, 2026
Labelsenhancement
What version of shadowsocks-libev are you using?
shadowsocks-libev 3.3.4
What operating system are you using?
Darwin / Linux
What did you do?
Doing bind() on port 0 can acquire a random unused port, see https://eklitzke.org/binding-on-port-zero
Run ss-local -s <server> -p <port> -m <method> -k <key> -l 0
What did you expect to see?
1970-01-01 00:00:00 INFO: listening at 127.0.0.1:<randomized port>
What did you see instead?
1970-01-01 00:00:00 INFO: listening at 127.0.0.1:0
What is your config in detail (with all sensitive info masked)?
Darwin Kernel Version 18.7.0 Linux 5.6.15.zen2-1
Source: shadowsocks/shadowsocks-libev