Вопросы по теме 'iocp'
Проблема с многопоточным клиентом IOCP
Я пишу многопоточный клиент, который использует порт завершения ввода-вывода.
Я создаю и подключаю сокет с установленным атрибутом WSA_FLAG_OVERLAPPED.
if ((m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
throw...
1169 просмотров
schedule
12.10.2021
Многопоточный сервер IOCP и класс с подсчетом ссылок
Я работаю на сервере IOCP (перекрывающийся ввод-вывод, 4 потока, CreateIoCompletionPort, GetQueuedCompletionStatus, WSASend и т. Д.). И моя цель - отправить единый буфер с подсчетом ссылок для всех подключенных сокетов. (Я последовал предложению Лена...
271 просмотров
schedule
27.03.2022
Нужно ли устанавливать hEvent в структуре OVERLAPPED при выполнении портов завершения ввода-вывода?
Я использую порты завершения ввода-вывода в Windows для связи через последовательный порт (потенциально у нас будет очень много использования последовательного порта). Я сделал обычное дело, создав IOCP, раскрутив потоки ввода/вывода и связав мой...
1004 просмотров
schedule
04.05.2022
можно ли вообще считать ошибкой печально известную ошибку `ERROR_NETNAME_DELETED'?
Я пишу TCP-сервер в Windows NT, используя порты завершения для использования асинхронного ввода-вывода. У меня есть класс TcpSocket, класс TcpServer и некоторые (виртуальные функции) обратные вызовы для вызова после завершения операции ввода-вывода,...
5557 просмотров
schedule
10.05.2022
Шаблон кодирования для зависимого перекрывающегося ввода-вывода в окнах
Я программист Linux и недавно участвовал в переносе клиента на основе epoll с двумя файловыми дескрипторами, написанными на c, в Windows. Как вы знаете, в Linux используется epoll или select (я знаю, что Windows поддерживает select, но это...
400 просмотров
schedule
03.06.2022
Каков наилучший способ параллельного эхо-тестирования множества сетевых устройств?
Я опрашиваю много устройств в сети (более 300) итеративным пингом.
Программа опрашивает устройства последовательно, поэтому медленно. Я хотел бы увеличить скорость опроса.
Есть несколько способов сделать это в Delphi 7:
Каждое устройство...
9802 просмотров
schedule
11.06.2022
Проблема со стресс-тестом сервера Winsock IOCP
У меня есть сервер winsock IOCP, написанный на С++ с использованием соединений TCP IP. Я протестировал этот сервер локально, используя петлевой адрес с симулятором клиента. Мне удалось получить более 60 000 клиентов без труда. Проблема, с которой я...
1093 просмотров
schedule
15.06.2022
IOCP: уведомления без копирования байтов
У меня есть приложение IOCP, которое хранит буфер размером 64 КБ для каждого контекста сокета. Он использует много оперативной памяти, обрабатывая тысячи сокетов. Вместо этого я хочу переключиться на модель, в которой у меня есть буфер размером 64...
1039 просмотров
schedule
26.06.2022
Ограничение Windows на количество одновременно открытых сокетов / соединений на машине
Допустим, у меня есть Windows 7 с одним реальным сетевым интерфейсом и несколькими интерфейсами обратной связи. У меня есть сервер с поддержкой IOCP, который принимает соединения от клиентов. Я пытаюсь имитировать как можно больше реальных...
16495 просмотров
schedule
03.07.2022
Вопрос интерпретации документации IOCP - неоднозначность владения буфером
Поскольку я не являюсь носителем английского языка, мне может что-то не хватать, так что, возможно, кто-то здесь знает лучше меня.
Взято из документации WSASend в MSDN :
lpBuffers [в]
Указатель на массив структур WSABUF. Каждая...
883 просмотров
schedule
09.07.2022
Закрытие сокетов, которые не завершили AcceptEx - если и как?
Я понимаю, что если я выполню вызов AcceptEx через указатель функции, как это рекомендуется в документации, то, если я укажу размер буфера получателя, вызов не завершится, пока не будут отправлены некоторые данные:
if (!lpfnAcceptEx(sockListen,...
500 просмотров
schedule
27.07.2022
Как предотвратить блокировку порта завершения ввода-вывода при наличии пакетов завершения?
У меня есть серверное приложение, использующее Механизм порта завершения ввода-вывода (IOCP) корпорации Майкрософт для управления асинхронной связью сетевых сокетов. В целом, этот подход IOCP очень хорошо зарекомендовал себя в моей среде. Однако я...
2067 просмотров
schedule
28.08.2022
Использование IOCP с несколькими слушателями
Как настроить сокеты IOCP для нескольких прослушивателей (на разных портах)? Каждый пример, который я нахожу в Интернете, представляет собой пример с одним сервером и несколькими клиентами, и я не понимаю, должен ли я создавать несколько IOCP или...
930 просмотров
schedule
04.10.2022
Путаница с ключом порта завершения ввода-вывода
Я пишу сервер на основе порта завершения ввода-вывода ( исходный код здесь ) с помощью Windows DLL API в Python с использованием модуля ctypes. Но это довольно прямое использование API, и этот вопрос адресован тем, кто знаком с IOCP, а не с Python....
2798 просмотров
schedule
30.04.2023
Преимущества и недостатки порта завершения ввода-вывода
Почему многие считают порт завершения ввода-вывода быстрой и удобной моделью? Каковы преимущества и недостатки порта завершения ввода-вывода?
Я хочу знать некоторые моменты, которые делают IOCP быстрее, чем другие модели.
Если вы можете...
27728 просмотров
schedule
22.10.2022
Как получить реальный IP-адрес и порт клиента с помощью IOCP?
Мне нужно взять ip-адрес и порт клиентов на сервере. Сервер написан на C++ с использованием IOCP, поэтому я не принимаю клиентов, я создаю новый сокет и затем принимаю (AcceptEx) клиента на этот готовый сокет. И из-за этого структура sockaddr_in...
836 просмотров
schedule
15.07.2023
Могу ли я использовать std::shared_ptr для переноса данных ввода-вывода в IOCP?
Я работаю над клиентским приложением, использующим IOCP.
Мой класс данных ввода-вывода получен из WSAOVERLAPPED:
class IoRequest : public WSAOVERLAPPED
{
...
};
И при выполнении асинхронных операций ввода-вывода я использую это так:
{...
263 просмотров
schedule
15.06.2023
Неудачный DisconnectEx/AcceptEx по-прежнему планирует перекрывающееся событие IOCP.
Виндовс 8, х64.
Использование перекрывающихся сокетов Windows Api с IOCP.
Заметил неожиданное поведение с сокетами: например, вызов DisconnectEx возвращает ошибку WSAENOTCONN, но позже я получаю событие в GetQueuedCompletionStatusEx именно для...
642 просмотров
schedule
28.02.2023
Порты завершения ввода-вывода и управление OVERLAPPED
Как win32 управляет экземплярами структуры OVERLAPPED в контексте двух функций:
GetQueuedCompletionStatus
PostQueuedCompletionStatus
Когда я вызываю GetQueuedCompletionStatus, освобождает ли win32 экземпляр структуры OVERLAPPED или я...
2901 просмотров
schedule
21.04.2023
Порты завершения ввода-вывода и сокет WSARecv()
Я пытаюсь понять, как IOCP работает с сокетами. Мне нужно понять, так ли они работают:
Я создаю порт завершения, который представляет собой не что иное, как очередь, которая будет получать уведомления, когда какая-то операция завершится, а затем...
1246 просмотров
schedule
23.10.2022