Я разрабатываю управляемый событиями сервер сокетов Win32 в C. Для управления несколькими аспектами процесса связи мне нужно создать структуру данных в тот момент, когда новое соединение принято, однако я не нашел способ привязать данные моего приложения к вновь принятому сокету таким образом, что, зная сокет, я могу эффективно извлекать данные управления соединением, из-за этого каждый раз, когда я получаю сообщение FD_READ или FD_CLOSE, я должен выполнить операцию поиска, но несмотря на то, что функция поиска очень эффективна, она все еще подразумевает накладные расходы.Можно ли прикрепить данные приложения к гнезду?
Интересно, есть ли набор функций, подобных SetWindowLongPtr/GetWindowLongPtr, которые могут позволить мне прикрепить данные моего приложения к каждому новому сокету, таким образом я мог бы полностью избежать операции поиска.
ПОЯСНЕНИЕ:
Я не искал более эффективный способ поиска, тот, я использую довольно эффективен, что я хочу, это способ, чтобы полностью избежать какого-либо операции поиска (если такая вещь возможна).
Поскольку сокеты представлены файловыми дескрипторами, вы можете просто использовать базовый тип глобальной структуры поиска. – Linuxios
Как вы мультиплексируете несколько сокетов? С помощью WSAAsyncSelect() (в котором вы можете кодировать индекс в сообщении), выберите() (в этом случае вам все равно нужен линейный поиск) или что-то еще? – nos