Я впервые использую $ SUB и столкнулся с этой проблемой.И клиент, и сервер используют перекрывающиеся операции, и вот конкретная ситуация, с которой у меня проблема.
Клиент
C1.Подключается к серверу.
C2.Посылает сообщение больше, чем конвейерный буфер, и буфер передается в перекрывающуюся операцию чтения на сервере.
C3.Успешно отменяет операцию отправки.
Сервер
S1.Создает и ждет клиента.
S2.Когда клиент подключен, он читает сообщение.
S21.Поскольку сообщение не помещается в буфер (ERROR_MORE_DATA), оно читается по частям.
Мне кажется, что нет способа определить, когда сообщение целиком, как изолированная единицаОтмененоВ частности, если клиент отменяет операцию отправки, сервер не получает все сообщение, только его часть, и последующая операция чтения возвращается с ERROR_IO_PENDING (в моем случае), что означает, что нет данных для чтения, и операция чтения имеетбыл в очереди.Я ожидаю, что у меня будут какие-то средства, чтобы сообщить читателю, что сообщение было отменено, чтобы читатель мог действовать в соответствии с ним.
Однако соответствующая документация разбросана по MSDN, поэтому я также могу что-то упустить,Я был бы очень признателен, если бы кто-нибудь смог пролить свет на это.Спасибо.