Suchen Sie nach einem der netcat-Quellcodes netcat.c in der Methode 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
Um das Verhalten zu ändern, müssen Sie dann den Code ändern.
Ich habe jedoch einen Test mit netcat-openbsd 1.105-7 gemacht, der Teil von Ubuntu Xenial ist und offensichtlich ohne Definition von SO_REUSEPORT erstellt wurde. Da SO_REUSEADDR festgelegt ist, aber nicht SO_REUSEPORT (unter einem Kernel> 3.9), funktioniert es so, als würden Sie erwarten, dass Sie nicht die zweite Intance am selben Port ausführen.