Как отменить RIOReceiveEx на UDP сокете?
В MSDN написано, что отменить можно при помощи WSAIoctl(SIO_FLUSH).
У меня WSAIoctl завершается с ошибкой WSAEFAULT.
Сейчас для отмены закрываю сокет через closesocket, но это нехороший вариант.
Здравствуйте, 3m-soft, Вы писали:
3S>Как отменить RIOReceiveEx на UDP сокете? 3S>В MSDN написано, что отменить можно при помощи WSAIoctl(SIO_FLUSH). 3S>У меня WSAIoctl завершается с ошибкой WSAEFAULT. 3S>Сейчас для отмены закрываю сокет через closesocket, но это нехороший вариант.
Ошибка WSAEFAULT говорит о том, что вы где-то Ioctl'у невалидный указатель передали (или выходной буфер слишком маленький). Соответственно, проверьте внимательно параметры Ioctl'а.
Здравствуйте, Pzz, Вы писали:
Pzz>Ошибка WSAEFAULT говорит о том, что вы где-то Ioctl'у невалидный указатель передали (или выходной буфер слишком маленький). Соответственно, проверьте внимательно параметры Ioctl'а.
Из MSDN:
SIO_FLUSH — Discards current contents of the sending queue associated with this socket. No input and output buffers are required. The WSAENOPROTOOPT error code is indicated for service providers that do not support this IOCTL.
Я пробовал передавать буферы, получаю другую ошибку — WSAEOPNOTSUPP.