Winsock — ошибка 10038 — сервер Win2K3 — непонятное поведение

StackOverflow https://stackoverflow.com/questions/100074

  •  01-07-2019
  •  | 
  •  

Вопрос

Попытка отправить сообщение через сокет завершилась неудачей с ошибкой WinSock 10038.Примерно через 40 секунд сообщения будут успешно получены из того же сокета, и впоследствии send() также будет успешным в том же сокете.Такое поведение наблюдалось в Windows Server 2003.Известно ли такое поведение WinSock и Windows Server 2003?

Это было полезно?

Решение

Ошибка Winsock 10038 означает «Попытка выполнения операции над чем-то, не являющимся сокетом».

Маленькая хитрость, чтобы найти информацию о кодах ошибок (полезно для всех видов кодов ошибок Windows):

  • Откройте командную строку
  • Введите «net helpmsg 10038».

На каком языке написано ваше приложение?Если это C/C++, возможно, вы используете неверный дескриптор сокета?

Другие советы

Огромное спасибо a_mole за идею проверки многоуровневых провайдеров Winsock.У нас возникли проблемы с некоторыми нашими компьютерами и базой данных TimesTen.Когда мы пытаемся настроить DSN клиента ODBC, мы получаем ошибку 10038.Изучив выходные данные netsh на затронутых компьютерах, мы обнаружили, что на них установлен Embassy Trust Suite от Wave Systems.Очевидно, Dell предварительно установила это на некоторые из своих компьютеров.В любом случае, после удаления этого программного обеспечения проблема была решена.

еще раз спасибо

Лу

Это не проблема платформы, я могу это гарантировать.Скорее всего, любая переменная, которую вы используете для доступа к дескриптору сокета, не является потокобезопасной и используется в вызове send() до создания фактического сокета.

Другая возможная причина — наличие многоуровневых поставщиков Winsock.«netsh winsock show» в командной строке покажет вам установленные поставщики, и вы можете попробовать удалить любые сторонние поставщики.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top