Исключение System.Net.Sockets в IOControl

На Windows 7 (.Net 4.6.1) я получаю исключение с этим кодом:

    var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.IOControl(-1744830448, new byte[4] { 1, 0, 0, 0 }, null);

Попытка выполнить операцию не поддерживается для типа объекта, на который ссылается System.Net.Sockets.Socket.IOControl(Int32 ioControlCode, Byte[] optionInValue, Byte[] optionOutValue)

Это прекрасно работает с Windows 8 на моей виртуальной машине.

1 ответ

Решение

Использование SIO_LOOPBACK_FAST_PATH = -1744830448 с методом IOControl не поддерживается Windows 7, поэтому возникнет исключение.

Из документации MSDN для SIO_LOOPBACK_FAST_PATH:

Попытка операции не поддерживается для типа объекта, на который ссылаются. Эта ошибка возвращается, если указанная команда IOCTL не поддерживается. Эта ошибка возвращается, если SIO_LOOPBACK_FAST_PATH IOCTL используется в Windows 7, Windows Server 2008 R2 и более ранних версиях.

Эта ошибка также возвращается, если IOCTL SIO_LOOPBACK_FAST_PATH не поддерживается поставщиком транспорта.

Другие вопросы по тегам