An I/O Completion Port (IOCP) provides a way to execute asynchronous I/O operations efficiently on Windows.
1 ответ

WSARecv иногда возвращает "неверный дескриптор (ошибка № 6)" для сокета, связанного с портом IOCP. (C++)

Я пытаюсь написать сервер, который может поддерживать множество клиентских подключений одновременно, поэтому я пытаюсь сделать это с IOCP. Итак, позвольте мне кратко рассказать о моем потоке кода, а затем я могу объяснить свою проблему. Прежде всего…
11 дек '13 в 17:42
0 ответов

Способ использования IOCP для чтения файла в Windows

Я пишу с использованием Python 3.5. Я хочу использовать IOCP для чтения файлов в Windows. Есть ли какой-нибудь простой способ использовать ProactorEventLoop помимо Subprocess или Executed Thread? Спасибо!
06 дек '15 в 12:58
4 ответа

Масштабируемый серверный фреймворк в C++

Я ищу написать серверное приложение на C++, предназначенное для одновременной работы с десятками тысяч клиентов. Он должен работать под Windows и Linux. Я искал фреймворки и библиотеки и наткнулся на Boost Asio, который кажется очень зрелой и широко…
15 июл '11 в 00:15
1 ответ

IOCP и перезаписанный буфер

Ну, я делаю IOCP для обработки клиентских подключений со следующими деталями: - Threads = (CPU cores * 2) - Assigning an completion port to each socket - Accessing the socket context by Client Index or overlapped struct (either way is the same) Поэт…
27 июл '12 в 05:38
1 ответ

WSASend с IOCP заказан?

Я хотел бы создать приложение IOCP для получения данных TCP. После получения мне придется обрабатывать данные и частично записывать байты. Поймите, что WSASend с IOCP может сделать эту работу. Но меня беспокоит, будет ли WSASend в очередь и синхрони…
26 авг '18 в 05:52
1 ответ

Windows XP против 7, в чем разница, принимающие правила UDP

Когда я получаю пакет UDP (особенно rtp), у меня возникает другое явление. Это происходит из-за отличия версии Windows от Windows 7 Professional K. UDP-пакет приходит нормально без открытого порта udp на моем компьютере (я видел его на wireshark), н…
10 окт '12 в 00:41
2 ответа

Затраты.NET IOCP ThreadPool с асинхронными операциями UDP

Я разработал медиа-сервер VoIP, который обменивается RTP-пакетами с удаленными конечными точками SIP. Он должен хорошо масштабироваться - и хотя я изначально был обеспокоен тем, что моя реализация C# не будет приближаться к версии C++, которую она з…
25 май '11 в 21:41
1 ответ

Каковы будут значения этих параметров, когда GetQueuedCompletionStatus() вернет FALSE?

Есть две причины, которые могут вызвать GetQueuedCompletionStatus() потерпеть неудачу FALSE), во-первых, потому что дескриптор порта завершения, связанный с ним, закрыт, в то время как вызов является ожидающим, это будет иметь место, если lpOverlapp…
27 фев '15 в 15:47
1 ответ

Какое максимальное количество байтов WSARecv может получить за один раз?

Я использую std::vector для представления буфера в моей структуре данных для каждого ввода-вывода: struct PerIoData { WSAOVERLAPPED m_overlapped; SOCKET m_socket; WSABUF m_wsaBuf; std::vector<BYTE> m_vecBuffer; DWORD m_dwFlags; DWORD m_dwNumbe…
25 июл '12 в 14:16
1 ответ

Каков наилучший способ реализовать эхо-сервер с асинхронным вводом-выводом и IOCP?

Как мы все знаем, эхо-сервер - это сервер, который читает данные из сокета и записывает эти данные в другой сокет. Так как порты завершения ввода / вывода Windows предоставляют различные способы работы, мне было интересно, как лучше (наиболее эффект…
17 окт '14 в 17:39
1 ответ

GetQueuedCompletionStatusEx() не возвращает per-OVERLAPPED код ошибки

Я использую GetQueuedCompletionStatusEx() API, и я только что понял, что он действительно может читать N пакетов OVERLAPPED всего за 1 системный вызов, а не только 1 OVERLAPPED, как GetQueuedCompletionStatus(), но я обеспокоен тем, что я не могу нич…
22 мар '14 в 09:34
0 ответов

Как многопоточная базовая структура (nodejs,asio) передает данные на уровень приложения?

Я делаю демо по iocp для простой игры-SVR Class Game{ map<string, Table*> all_tables;//tableid-table map void dispatch(Client *c) //dispatch client command { Table *t = all_tables[c->player->roomid]; t->execute(c->packet.cmd, c-&gt…
0 ответов

Работают ли порты завершения ввода-вывода Windows с классами в качестве ключей завершения?

TLDR - GetQueuedCompletionStatus не возвращает, если я предоставляю объект класса в качестве ключа завершения, он возвращает, только если вместо этого передан объект структуры. Я создал IOCP в основном потоке, используя CreateIoCompletionPort ShareI…
10 окт '18 в 13:04
1 ответ

closesocket() не завершает ожидающие операции IOCP

В настоящее время я работаю над серверным приложением на C++. Мое главное вдохновение - эти примеры: Пример Windows SDK IOCP Пример программы сервера портов ввода / вывода IPv4/IPv6 Мое приложение сильно похоже на это (socketobj, packageobj, ...). В…
12 окт '17 в 06:44
1 ответ

Неблокирующая розетка подключения в Windows без ConnectEx

Мне нужно инициировать тысячи клиентских подключений в одном процессе, главное ограничение, которое мне нужно обойти, это драйвер не поддерживает ConnectEx, поэтому у меня не может быть чистого решения IOCP. Моей первой мыслью был пул потоков для об…
23 окт '11 в 13:45
2 ответа

Как отлаживать код, который взаимодействует с низкоуровневыми API (такими как порты завершения ввода / вывода)?

Я написал консольное приложение, которое использует Socket"s *Async множество методов и время от времени вылетает. Он не показывает мне, где он генерировал исключение, как синхронизированный код, консоль просто выключается, и я понятия не имею, что …
1 ответ

Многопоточный сервер IOCP и класс подсчета ссылок

Я работаю на сервере IOCP (перекрывающийся ввод-вывод, 4 потока, CreateIoCompletionPort, GetQueuedCompletionStatus, WSASend и т. Д.). И моя цель состоит в том, чтобы отправить единый буфер с подсчетом ссылок на все подключенные сокеты (я следовал со…
15 дек '13 в 17:37
1 ответ

C++ Windows IOCP - отсутствуют данные HTTP POST

Я написал очень простой HTTP-сервер IOCP, который работает для глагола GET, но не POST. Я создаю сокет и поток прослушивания, в котором accept() ожидает соединения. Когда клиент подключается, я вызываю ioctlsocket(), чтобы разблокировать сокет, зате…
23 апр '10 в 13:21
1 ответ

Разместить много wsasend на одном сокете из нескольких потоков

(вопрос скопирован с форума msdn) MSDN говорит это: Если вы используете порты завершения ввода / вывода, помните, что порядок вызовов, выполняемых в WSASend, также является порядком заполнения буферов. WSASend не должен вызываться на одном и том же …
25 сен '14 в 19:53
1 ответ

Как бороться со случаем, когда несколько операций размещены в одном сокете

Я разрабатываю клиентское приложение, которое управляет одним сокетом. Я использую IOCP для управления асинхронным вводом / выводом. Это цитата из книги по сетевому программированию: Все перекрывающиеся операции гарантированно выполняются в том поря…
26 июл '12 в 13:35