Имея приложение для Windows IOCP ............управление Буфером для сокетов применения передовой практики
Я понимаю, что для асинхронного I/O операции (в сети) буфер должен оставаться в силе для продолжительность операции отправки/чтения.
Так что для каждого соединения у меня есть один буфер для чтения.
Для отправки я использую буферы, к которым я копирую данные для отправки. Когда операция отправки завершается, я освобождаю буфер, чтобы его можно было повторно использовать.
До сих пор это хорошо, а не большая проблема.
Что остается неясным: как вы, ребята, это делаете?
Другое дело, что даже имея вещи таким образом, я имею в виду мультибуферы, сторона-получатель может быть затоплена (разговаривая с опытом) с данными.
Даже настройка SO_RCVBUF до 25 МБ не помогла в моих тестах.
Итак, что мне делать? Есть ли очередь для отправки?
Каким образом 'SO_RCVBUF' не помогло? С UDP это головная боль, но с TCP - в чем проблема? Также очередь отправки ортогональна к тому, чтобы сторона получателя была затоплена. –
"ортогональный"? Я ограничен моим английским хе .. Ну, я думал, что «SO_RCVBUF» позволит получить больше данных, чем может принять мое приложение, то есть, если я планирую читать 100 байт в буфер, но отправитель отправил мне 1 МБ, то буфера сокета (который я установил размер с «SO_RCVBUF») будет заполнен. – Poni
Orthogonal = perpendicular :) –