При использовании ATM пакет CONNECT ACK будет поступать от самого последнего коммутатора, а не от конечного клиента. Итак, вам нужно будет вызвать accept () для сокета, затем посмотреть на адрес (на основе переданного addr_family) и в этот момент просто закрыть сокет. К тому времени, когда он достигнет запрашивающей стороны, он, вероятно, просто получит ошибку.
И я не уверен, сколько ресурсов, по вашему мнению, это займет, но принятие соединения находится на очень низком уровне и не будет проблемой. Отбросить их довольно легко.
Если вы подвергаетесь DoS-атаке, ваш код МОЖЕТ прекратить прослушивание в течение заданного периода времени, поэтому злоумышленник просто получит сбои, если вы так беспокоитесь об этом.
Действительно ли имеет значение, знает ли клиент, что прослушивание сокета происходит? Попробуйте использовать telnet для подключения к вашему локальному хосту через порт 137 и посмотрите, как быстро общий доступ к файлам в Windows обрывает соединение ... (Если он у вас даже включен, и если я запомнил правильный номер порта .. хе ...) *
Но на уровне РОЗЕТКИ вы не сможете делать то, что хотите. Вы говорите о переходе на уровень TCP, изучении входящих запросов на соединение и работе с ними там.
Это можно сделать, но вы говорите о драйвере ядра для этого. Я совсем не уверен, что вы можете сделать это в пользовательском режиме.
Если вы хотите, чтобы Kernel помог с этим, дайте мне знать. Возможно, я смогу привести вам несколько примеров или указаний.
Только мои два цента, и IMVHO ...