Olhando para um dos códigos-fonte do netcat netcat.c no método local_listen
:
ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &x, sizeof(x));
if (ret == -1)
err(1, NULL);
# if defined(SO_REUSEPORT)
ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));
if (ret == -1)
err(1, NULL);
# endif
Em seguida, para modificar o comportamento, você precisa modificar o código.
No entanto, fiz um teste com o netcat-openbsd 1.105-7 que faz parte do Ubuntu Xenial e parece construído sem definir SO_REUSEPORT. Como definiu SO_REUSEADDR, mas não SO_REUSEPORT (sob um kernel > 3.9), funciona como se você esperasse recusar executar uma segunda intance na mesma porta.