Мне нужна опция TCP (ioctl) для отправки данных сразу

Похоже, вы неправильно используете AuthenticationHandler. Вы не должны немедленно отклонять доступ, если пользователь не может пройти аутентификацию. Если вы сделаете это, он даже не достигнет контекста MVC в конвейере.

Если вы намеренно не хотите отклонить какой-либо доступ для неаутентифицированных пользователей, вы должны только аутентифицировать или передавать его как анонимного пользователя. После этого в какой-то момент включается AuthorizeAttribute и проверяется, имеет ли пользователь доступ к запрошенному ресурсу или нет. Если он не аутентифицирован, авторизация отклонит запрос.

7
задан Michael Kohne 3 November 2008 в 14:53
поделиться

6 ответов

IIUC, устанавливая опцию TCP_NODELAY должен сбросить все пакеты (т.е. установка реализаций tcp.c NODELAY с вызовом к tcp_push_pending_frames). Таким образом, при установке опции сокета после того, как каждый отправляет вызов, необходимо получить то, что Вы хотите.

9
ответ дан 6 December 2019 в 23:15
поделиться

Возможно, набор TCP_NODELAY и набор Ваш MTU достаточно низко так, чтобы было бы самое большее 1 сообщение на кадр? О, и добавьте флаг "-фрагмента" на исходящих пакетах

1
ответ дан 6 December 2019 в 23:15
поделиться

Вы попытались открыть новый сокет для каждого сообщения и закрыть его сразу? Издержки могут быть противными, но это должно разграничить Ваши сообщения.

0
ответ дан 6 December 2019 в 23:15
поделиться

В худшем варианте развития событий Вы могли пойти один уровень ниже (неструктурированные сокеты), где Вы имеете лучший контроль над отправленными пакетами, но затем необходимо было бы иметь дело со всеми основными элементами TCP.

0
ответ дан 6 December 2019 в 23:15
поделиться

Возможно, Вы могли попытаться поместить стопку tcp в режим низкой задержки:

echo 1 > /proc/sys/net/ipv4/tcp_low_latency

Это должно способствовать пакетам испускания как можно быстрее по объединяющимся данным. Считайте человека на tcp (7) для получения дополнительной информации.

-1
ответ дан 6 December 2019 в 23:15
поделиться

Вы не можете работать вокруг проблемы, если Вы не уверены, какова проблема.

Если они сделали ошибку новичка предположения, что recv () получает точно одно сообщение затем, я не вижу способ решить его полностью. Отправка только одного сообщения на кадр Ethernet является одной вещью, но если несколько кадров Ethernet прибывают, прежде чем получатель называет recv (), это все еще получит несколько сообщений в одном вызове.

Перегрузка сети делает практически невозможным предотвратить это (при поддержании достойной пропускной способности), даже если они могут сказать Вам, как часто они называют recv ().

2
ответ дан 6 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: