Здравствуйте, Michael Chelnokov, Вы писали:
MC>А если ты хочешь сразу пачку WSASend вызвать, не дожидаясь завершения предыдущей отсылки, то это плохая идея. Кто тебе сказал, что данные не перемешаются?
Проверил, действительно все данные в кучу

Получается, что при отправке только части данных, я уже в треде коллбэка порта завершения должен вызвать повторно WSASend. Эва кааак... Спасибо, буду писать. Вернее, переписывать
С праздником!
Здравствуйте, Aspire, Вы писали:
A>Мне нельзя использовать стуктуру с предыдущего раза... и прочий бред
Эксперименты показали следующее.
1. Вызывать WSARecv и WSASend в цикле для одного клиента, действительно нельзя, т.к., все полученные данные перемешиваются в кучу.
2. Если вызывать блокирующий recv в цикле, то макс размер полученных за одни раз данных варьируется хз в зависимости от чего от 3 до 20кб, но это не имеет никакого отношения к той величине, которая будет получена при перекрытом вызове ф-ции WSARecv, с помощью которой, можно получить и 100Мб до того, как на обработчик порта придет сигнал о завершении ввода/вывода. Может, и больше, но я не проверял. Вот она сила!!! Тут уж, не без оснований, можно считать, что в случае WSASend будет тажа ситуация.
Теперь, на отправку я буду крутить цикл для разных клиентов, а то, что не дослалось, хотя это уж вряд-ли (см 2 пункт), буду досылать в коллбэке обработчика порта.
3. Не забывайте перед вызовом WSASend/WSARecv обнулять структуру OVERLAPPED.
Всем спасибо за помощь.
Хотел точку поставить жирную точку во всем этом беспределе, но, поскольку недавно на этом форуме, то поставил ее не там. Сорри. Исправляюсь.
Здравствуйте, Aspire, Вы писали:
A>Мне нельзя использовать стуктуру с предыдущего раза... и прочий бред
Эксперименты показали следующее.
1. Вызывать WSARecv и WSASend в цикле для одного клиента, действительно нельзя, т.к., все полученные данные перемешиваются в кучу.
2. Если вызывать блокирующий recv в цикле, то макс размер полученных за одни раз данных варьируется хз в зависимости от чего от 3 до 20кб, но это не имеет никакого отношения к той величине, которая будет получена при перекрытом вызове ф-ции WSARecv, с помощью которой, можно получить и 100Мб до того, как на обработчик порта придет сигнал о завершении ввода/вывода. Может, и больше, но я не проверял. Вот она сила!!! Тут уж, не без оснований, можно считать, что в случае WSASend будет тажа ситуация.
Теперь, на отправку я буду крутить цикл для разных клиентов, а то, что не дослалось, хотя это уж вряд-ли (см 2 пункт), буду досылать в коллбэке обработчика порта.
3. Не забывайте перед вызовом WSASend/WSARecv обнулять структуру OVERLAPPED.
Всем спасибо за помощь.