I have seen that TCP_NIO ignores 'bind_addr' in some requests, in the same situation TCP works perfectly.
How to reproduce.
let's assume you have 2 computers - the first one with 1 physical network card but this card have several IP addresses (the first IP is considered default); the seconds computer just has 1 network card with one IP.
node A - run it at the first computer and set 'bind_addr' to a NON-DEFAULT IP address
node B - run it at the second computer
You will see in networks sniffer that some packets goes from wrong address - instead of 'bind_addr", the default IP is used. And the communication does not work.
In the same situation TCP works perfectly, so it seems to be bug in TCP_NIO.