2008-09-19 7 views
0

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

+0

Вы пробовали на другой платформе (XP, например)? – paxdiablo 2008-09-19 06:45:14

ответ

3

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

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

  • Откройте командную строку
  • типа "чистой HELPMSG 10038"

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

0

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

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

0

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

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

Лу

Смежные вопросы