Нет данных о сокете подключения Windows 10
Обновлено: 21.11.2024
Функция recv получает данные из подключенного сокета или связанного сокета без установления соединения.
Синтаксис
Параметры
Дескриптор, идентифицирующий подключенный сокет.
Указатель на буфер для приема входящих данных.
Длина в байтах буфера, на который указывает параметр buf.
Набор флагов, влияющих на поведение этой функции. См. примечания ниже. Дополнительные сведения о возможном значении этого параметра см. в разделе "Примечания".
Возвращаемое значение
Если ошибок не возникает, recv возвращает количество полученных байтов, и буфер, на который указывает параметр buf, будет содержать полученные данные. Если соединение было корректно закрыто, возвращаемое значение равно нулю.
В противном случае возвращается значение SOCKET_ERROR, и конкретный код ошибки можно получить, вызвав WSAGetLastError.
Код ошибки | Значение |
---|---|
WSANOTINITIALISED | Перед использованием этой функции должен произойти успешный вызов WSAStartup. |
WSAENETDOWN | Сбой сетевой подсистемы. |
WSAEFAULT | buf параметр не полностью содержится в допустимой части адресного пространства пользователя. |
WSAENOTCONN | сокет не подключен. |
WSAEINTR | Вызов (блокирующий) был отменен с помощью WSACancelBlockingCall.< /td> |
WSAEINPROGRESS | Выполняется блокирующий вызов Windows Sockets 1.1, или поставщик услуг все еще обрабатывает функция обратного вызова. |
WSAENETRESET | Для сокета, ориентированного на соединение, эта ошибка указывает, что соединение га s был нарушен из-за активности keep-alive, которая обнаружила сбой во время выполнения операции. Для сокета дейтаграммы эта ошибка указывает на то, что время жизни истекло. |
WSAENOTSOCK | Дескриптор не является сокетом. |
WSAEOPNOTSUPP | MSG_OOB был указан, но сокет не стиль потока, такой как тип SOCK_STREAM, данные OOB не поддерживаются в коммуникационном домене, связанном с этим сокетом, или сокет является однонаправленным и поддерживает только операции отправки. |
WSAESHUTDOWN | Сокет закрыт; невозможно получить через сокет после того, как было вызвано завершение работы с параметром как SD_RECEIVE или SD_BOTH. |
WSAEWOULDBLOCK | Сокет помечен как неблокирующий, и операция приема будет заблокирована. |
WSAEMSGSIZE | Сообщение было слишком большим, чтобы поместиться в указанный буфер, и было усечено. |
WSAEINVAL | Сокет не был привязан с помощью привязки, или был указан неизвестный флаг, или был указан MSG_OOB для сокета с включенным SO_OOBINLINE, или (только для сокетов потока байтов) len было равно нулю или отрицательному значению.< /td> |
WSAECONNABORTED | Виртуальный канал был прерван из-за тайм-аута или другого сбоя. Приложение должно закрыть сокет, так как его больше нельзя использовать. |
WSAETIMEDOUT | Соединение был удален из-за сбоя в сети или из-за того, что одноранговая система не ответила. |
WSAECONNRESET | Виртуальный канал был сброшен удаленной стороной, выполнившей жесткое или аварийное закрытие. Приложение должно закрыть сокет, так как его больше нельзя использовать. В сокете UDP-датаграммы эта ошибка указывает на то, что предыдущая операция отправки привела к появлению сообщения ICMP «Порт недоступен». |
Примечания
Функция recv используется для чтения входящих данных из сокетов, ориентированных на установление соединения, или сокетов без установления соединения. При использовании протокола, ориентированного на соединение, сокеты должны быть подключены до вызова recv. При использовании протокола без установления соединения сокеты должны быть привязаны перед вызовом recv.
Должен быть известен локальный адрес сокета. Для серверных приложений используйте явную функцию связывания или неявную функцию принятия или функцию WSAAccept. Явное связывание не рекомендуется для клиентских приложений. Для клиентских приложений сокет может быть неявно привязан к локальному адресу с помощью подключения, WSAConnect, sendto, WSASendTo или WSAJoinLeaf.
Для сокетов с подключением или без подключения функция recv ограничивает адреса, с которых принимаются полученные сообщения. Функция возвращает сообщения только с удаленного адреса, указанного в соединении.Сообщения с других адресов (молча) отбрасываются.
Для сокетов, ориентированных на соединение (например, типа SOCK_STREAM), вызов recv вернет столько данных, сколько доступно в данный момент — вплоть до размера указанного буфера. Если сокет сконфигурирован для встроенного приема данных OOB (параметр сокета SO_OOBINLINE) и данные OOB еще не прочитаны, будут возвращены только данные OOB. Приложение может использовать команду ioctlsocket или WSAIoctlSIOCATMARK, чтобы определить, остались ли еще данные OOB для чтения.
Для сокетов без установления соединения (типа SOCK_DGRAM или других сокетов, ориентированных на сообщения) данные извлекаются из первой поставленной в очередь дейтаграммы (сообщения) с адреса назначения, указанного функцией соединения.
Если дейтаграмма или сообщение больше указанного буфера, буфер заполняется первой частью дейтаграммы, а recv генерирует ошибку WSAEMSGSIZE. Для ненадежных протоколов (например, UDP) теряются лишние данные; для надежных протоколов данные сохраняются поставщиком услуг до тех пор, пока они не будут успешно прочитаны путем вызова recv с достаточно большим буфером.
Если в сокете нет доступных входящих данных, вызов recv блокируется и ожидает поступления данных в соответствии с правилами блокировки, определенными для WSARecv, с неустановленным флагом MSG_PARTIAL, если только сокет не является неблокирующим. В этом случае возвращается значение SOCKET_ERROR с кодом ошибки, установленным на WSAEWOULDBLOCK. Функции select, WSAAsyncSelect или WSAEventSelect можно использовать для определения поступления дополнительных данных.
Если сокет ориентирован на соединение, а удаленная сторона изящно разорвала соединение и все данные были получены, recv завершится немедленно с нулевым полученным байтом. Если соединение было сброшено, получение завершится с ошибкой WSAECONNRESET.
Параметр flags можно использовать для влияния на поведение вызова функции за пределами параметров, указанных для соответствующего сокета. Семантика этой функции определяется параметрами сокета и параметром flags. Возможное значение параметра flags создается с помощью побитового оператора ИЛИ с любым из следующих значений.
- Буфер, предоставленный вызывающей стороной, полностью заполнен.
- Соединение закрыто.
- Запрос отменен или произошла ошибка.
Примечание. При выполнении блокирующего вызова Winsock, такого как recv, Winsock может потребоваться дождаться сетевого события, прежде чем вызов сможет завершиться. В этой ситуации Winsock выполняет ожидание с предупреждением, которое может быть прервано асинхронным вызовом процедуры (APC), запланированным в том же потоке. Выполнение другого блокирующего вызова Winsock внутри APC, прервавшего текущий блокирующий вызов Winsock в том же потоке, приведет к неопределенному поведению и никогда не должно предприниматься клиентами Winsock.
Пример кода
Пример кода
Windows Phone 8: эта функция поддерживается для приложений Windows Phone Store в Windows Phone 8 и более поздних версиях.
Windows 8.1 и Windows Server 2012 R2: эта функция поддерживается для приложений Магазина Windows в Windows 8.1, Windows Server 2012 R2 и более поздних версиях.
Протоколы TCP и UDP работают на основе номеров портов, используемых для установления соединения. Любому приложению или службе, которым необходимо установить соединение TCP/UDP, потребуется порт на его стороне.
Существует два типа портов:
В ситуации, когда один и тот же браузер создает множество подключений к нескольким веб-сайтам, для любого нового подключения, которое пытается установить браузер, используется эфемерный порт. Через некоторое время вы заметите, что соединения начнут давать сбои, и одна из вероятных причин этого может заключаться в том, что браузер использовал все доступные порты для установления соединений снаружи, и любая новая попытка установить соединение будет неудачной, поскольку больше нет доступные порты. Когда все порты на машине используются, мы называем это исчерпанием портов.
Диапазон динамических портов по умолчанию для TCP/IP
В соответствии с рекомендациями Управления по присвоению номеров в Интернете (IANA) корпорация Майкрософт увеличила динамический диапазон клиентских портов для исходящих подключений. Новый начальный порт по умолчанию — 49152, а новый конечный порт — 65535. Это отличие от конфигурации более ранних версий Windows, в которых использовался диапазон портов по умолчанию от 1025 до 5000.
Вы можете просмотреть динамический диапазон портов на компьютере с помощью следующих команд netsh:
- netsh int ipv4 показать динамический порт TCP
- netsh int ipv4 показать динамический порт udp
- netsh int ipv6 показать динамический порт TCP
- netsh int ipv6 показать динамический порт udp
Диапазон задается отдельно для каждого транспорта (TCP или UDP). Диапазон портов теперь представляет собой диапазон, который имеет начальную и конечную точки.У клиентов Microsoft, которые развертывают серверы под управлением Windows Server, могут возникнуть проблемы, влияющие на связь RPC между серверами, если во внутренней сети используются брандмауэры. В таких случаях рекомендуется перенастроить брандмауэры, чтобы разрешить трафик между серверами в диапазоне динамических портов от 49152 до 65535. Этот диапазон является дополнением к общеизвестным портам, используемым службами и приложениями. Либо диапазон портов, используемых серверами, можно изменить на каждом сервере. Вы настраиваете этот диапазон с помощью команды netsh следующим образом. Приведенная выше команда устанавливает динамический диапазон портов для TCP.
Начальный порт — это число, а общее количество портов — это диапазон. Ниже приведены примеры команд:
- netsh int ipv4 set dynamicport tcp start=10000 num=1000
- netsh int ipv4 set dynamicport udp start=10000 num=1000
- netsh int ipv6 set dynamicport tcp start=10000 num=1000
- netsh int ipv6 set dynamicport udp start=10000 num=1000
Эти примеры команд задают динамический диапазон портов, начиная с порта 10000 и заканчивая портом 10999 (1000 портов). Минимальный диапазон портов, который можно установить, — 255. Минимальный начальный порт, который можно установить, — 1025. Максимальный конечный порт (на основе настраиваемого диапазона) не может превышать 65535. Чтобы воспроизвести поведение по умолчанию Windows Server 2003, используйте 1025 в качестве начального порта, а затем используйте 3976 в качестве диапазона для TCP и UDP. Это приводит к начальному порту 1025 и конечному порту 5000.
В частности, об исходящих подключениях, поскольку для входящих подключений не требуется эфемерный порт для приема подключений.
Поскольку исходящие соединения начинают прерываться, вы можете столкнуться со многими из следующих ситуаций:
Не удается войти на компьютер с учетными данными домена, однако вход с локальной учетной записью работает. Для входа в домен потребуется связаться с контроллером домена для проверки подлинности, которая снова является исходящим соединением. Если у вас установлены учетные данные кэша, вход в домен может по-прежнему работать.
Ошибки обновления групповой политики:
Общие файлы недоступны:
RDP с уязвимого сервера не работает:
Любое другое приложение, работающее на машине, начнет выдавать ошибки
Перезагрузка сервера временно устранит проблему, но вы увидите, что все симптомы вернутся через некоторое время.
Если вы подозреваете, что на машине не хватает портов:
Попробуйте установить исходящее соединение. С сервера/машины получите доступ к удаленному общему ресурсу или попробуйте RDP на другой сервер или telnet на сервер через порт. Если исходящее соединение не удается ни для одного из них, перейдите к следующему шагу.
Откройте средство просмотра событий и в системных журналах найдите события, которые четко указывают на текущее состояние:
Идентификатор события 4227
Идентификатор события 4231
Соберите выходные данные netstat -anob с сервера. Вывод netstat покажет вам огромное количество записей для состояния TIME_WAIT для одного PID.
После корректного закрытия или резкого закрытия сеанса через 4 минуты (по умолчанию) порт, используемый процессом или приложением, будет освобожден обратно в доступный пул. В течение этих 4 минут состояние TCP-соединения будет TIME_WAIT. В ситуации, когда вы подозреваете исчерпание портов, приложение или процесс не сможет освободить все использованные порты и останется в состоянии TIME_WAIT.
Вы также можете увидеть соединения в состоянии CLOSE_WAIT в том же выводе; однако состояние CLOSE_WAIT — это состояние, когда на одной стороне однорангового узла TCP больше нет данных для отправки (отправлен FIN), но есть возможность получать данные с другого конца.Это состояние не обязательно указывает на исчерпание портов.
Наличие огромных подключений в состоянии TIME_WAIT не всегда указывает на то, что на сервере в настоящее время нет портов, если не проверены первые два пункта. Наличие большого количества соединений TIME_WAIT указывает на то, что процесс создает много соединений TCP и может в конечном итоге привести к исчерпанию портов.
Netstat был обновлен в Windows 10 с добавлением ключа -Q, чтобы показать порты, которые перешли из ожидания по времени, как в состоянии BOUND. Выпущено обновление для Windows 8.1 и Windows Server 2012 R2, содержащее эту функциональность. Командлет PowerShell Get-NetTCPConnection в Windows 10 также показывает эти связанные порты.
До 10 сентября 2016 г. данные netstat были неточными. Исправления для netstat, перенесенные обратно в 2012 R2, позволили Netstat.exe и Get-NetTcpConnection правильно сообщать об использовании порта TCP или UDP в Windows Server 2012 R2. Дополнительные сведения см. в разделе Windows Server 2012 R2: исправления временных портов.
Откройте командную строку в режиме администратора и выполните приведенную ниже команду
Откройте файл server.etl с помощью сетевого монитора и в разделе фильтра примените фильтр Wscore_MicrosoftWindowsWinsockAFD.AFD_EVENT_BIND.Status.LENTStatus.Code == 0x209. Вы должны увидеть записи, которые говорят STATUS_TOO_MANY_ADDRESSES. Если вы не найдете никаких записей, значит сервер все еще не исчерпал порты. Если вы их найдете, вы можете подтвердить, что на сервере исчерпаны порты.
Устранение неполадок с нехваткой портов
Суть в том, чтобы определить, какой процесс или приложение использует все порты. Ниже приведены некоторые инструменты, которые можно использовать для изоляции одного процесса
Способ 1
Начните с просмотра выходных данных netstat. Если вы используете Windows 10 или Windows Server 2016, вы можете запустить команду netstat -anobq и проверить идентификатор процесса, который имеет максимальное количество записей как BOUND. Кроме того, вы также можете запустить приведенную ниже команду PowerShell, чтобы идентифицировать процесс:
Большинство утечек портов вызвано тем, что процессы пользовательского режима неправильно закрывают порты при обнаружении ошибки. На уровне пользовательского режима порты (фактически сокеты) являются дескрипторами. И TaskManager, и ProcessExplorer могут отображать количество дескрипторов, что позволяет определить, какой процесс использует все порты.
Для Windows 7 и Windows Server 2008 R2 вы можете обновить версию PowerShell, включив указанный выше командлет.
Метод 2
Если метод 1 не помогает определить процесс (до Windows 10 и Windows Server 2012 R2), загляните в Диспетчер задач:
Добавьте столбец под названием «обработчики» в разделе сведений/процессов.
Отсортируйте дескрипторы столбца, чтобы определить процесс с наибольшим количеством дескрипторов. Обычно виновником может быть процесс с дескрипторами больше 3000, за исключением таких процессов, как System, lsass.exe, store.exe, sqlsvr.exe.
Если какой-либо другой процесс имеет более высокий номер, остановите этот процесс, а затем попробуйте войти в систему, используя учетные данные домена, и посмотрите, удастся ли это.
Способ 3
Если диспетчер задач не помог вам идентифицировать процесс, используйте Process Explorer для исследования проблемы.
Этапы использования обозревателя процессов:
Скачайте Process Explorer и запустите его с повышенными правами.
Удерживая клавишу Alt, щелкните заголовок столбца, выберите "Выбрать столбцы" и на вкладке "Производительность процесса" добавьте число дескрипторов.
Выберите Вид \ Показать нижнюю панель.
Выберите Вид \ Вид нижней панели \ Ручки.
Нажмите на столбец Handles для сортировки по этому значению.
Изучите процессы с большим числом дескрипторов, чем у остальных (вероятнее всего, их будет более 10 000, если вы не можете устанавливать исходящие соединения).
Нажмите, чтобы выделить один из процессов с большим количеством дескрипторов.
На нижней панели дескрипторы, перечисленные ниже, являются сокетами. (Технически сокеты — это файловые дескрипторы).
Некоторые из них являются нормальными, но многие из них не являются таковыми (от сотен до тысяч). Закройте рассматриваемый процесс. Если это восстановит исходящее соединение, то вы еще раз докажете, что причиной является приложение. Свяжитесь с поставщиком этого приложения.
Наконец, если вышеуказанные методы не помогли вам изолировать процесс, мы предлагаем вам собрать полный дамп памяти машины в проблемном состоянии. Дамп покажет вам, какой процесс имеет максимальное количество дескрипторов.
В качестве обходного пути можно перезагрузить компьютер, чтобы вернуть его в нормальное состояние и помочь решить проблему на данный момент. Однако, когда перезагрузка нецелесообразна, вы также можете рассмотреть возможность увеличения количества портов на машине с помощью следующих команд:
При этом динамический диапазон портов будет начинаться с порта 10000 и заканчиваться портом 10999 (1000 портов). Минимальный диапазон портов, который можно установить, – 255. Минимальный начальный порт – 1025. Максимальный конечный порт (в зависимости от настраиваемого диапазона) не может превышать 65 535.
Обратите внимание, что увеличение динамического диапазона портов не является постоянным решением, а только временным. Вам нужно будет отследить, какой процесс/процессоры потребляют максимальное количество портов, и с точки зрения этого процесса устранить неполадки, связанные с тем, почему он потребляет такое большое количество портов.
Для Windows 7 и Windows Server 2008 R2 можно использовать приведенный ниже сценарий для сбора выходных данных netstat с определенной периодичностью. Из выходных данных вы можете увидеть тенденцию использования порта.
Функция подключения устанавливает соединение с указанным сокетом.
Синтаксис
Параметры
Дескриптор, идентифицирующий неподключенный сокет.
Указатель на структуру sockaddr, с которой должно быть установлено соединение.
Длина в байтах структуры sockaddr, на которую указывает параметр name.
Возвращаемое значение
Если ошибок не возникает, connect возвращает ноль. В противном случае возвращается SOCKET_ERROR, и конкретный код ошибки можно получить, вызвав WSAGetLastError.
В блокирующем сокете возвращаемое значение указывает на успех или неудачу попытки подключения.
При использовании неблокирующего сокета попытка подключения не может быть завершена немедленно. В этом случае connect вернет SOCKET_ERROR, а WSAGetLastError вернет WSAEWOULDBLOCK. В этом случае возможны три сценария:
- Используйте функцию выбора, чтобы определить завершение запроса на подключение, проверив, доступен ли сокет для записи.
- Если приложение использует WSAAsyncSelect для индикации интереса к событиям подключения, оно получит уведомление FD_CONNECT, указывающее, что операция подключения завершена (успешно или нет).
- Если приложение использует WSAEventSelect для индикации интереса к событиям соединения, то соответствующий объект события будет сигнализировать о завершении операции соединения (успешно или нет).
Пока не будет завершена попытка подключения к неблокирующему сокету, все последующие вызовы подключения к тому же сокету завершатся с ошибкой с кодом WSAEALREADY и WSAEISCONN при успешном завершении подключения. Из-за неоднозначности версии 1.1 спецификации Windows Sockets коды ошибок, возвращаемые при подключении, когда соединение уже находится в состоянии ожидания, могут различаться в зависимости от реализации. В результате не рекомендуется, чтобы приложения использовали несколько вызовов для подключения для обнаружения завершения подключения. В этом случае они должны быть готовы обрабатывать значения ошибок WSAEINVAL и WSAEWOULDBLOCK так же, как и WSAEALREADY, чтобы обеспечить надежную работу.
Если возвращенный код ошибки указывает на неудачную попытку подключения (то есть WSAECONNREFUSED, WSAENETUNREACH, WSAETIMEDOUT), приложение может снова вызвать соединение для того же сокета.
Примечание. В целях обеспечения обратной совместимости эта ошибка сообщается как WSAEINVAL приложениям Windows Sockets 1.1, которые ссылаются либо на Winsock.dll, либо на Wsock32.dll.
Примечания
Функция подключения используется для создания подключения к указанному месту назначения. Если сокет s не связан, система присваивает уникальные значения локальной ассоциации, а сокет помечается как связанный.
Для сокетов, ориентированных на соединение (например, типа SOCK_STREAM), активное соединение с внешним хостом инициируется с помощью name (адрес в пространстве имен сокета; подробное описание см. bind и sockaddr).
Примечание. Если сокет открыт, выполняется вызов setsockopt, а затем выполняется вызов sendto, Windows Sockets выполняет неявный вызов функции связывания.
Когда вызов сокета завершается успешно, сокет готов к отправке и получению данных. Если элемент адреса структуры, заданный параметром name, заполнен нулями, соединение вернет ошибку WSAEADDRNOTAVAIL. Любая попытка восстановить активное подключение завершится ошибкой с кодом WSAEISCONN.
Для неблокирующих сокетов, ориентированных на соединение, часто невозможно установить соединение немедленно. В таком случае эта функция возвращает ошибку WSAEWOULDBLOCK. Однако операция продолжается.
Когда становится известен результат успеха или неудачи, об этом можно сообщить одним из двух способов, в зависимости от того, как клиент регистрируется для получения уведомления.
- Если клиент использует функцию select, об успехе сообщается в наборе writefds, а об ошибке — в наборе excludefds.
- Если клиент использует функции WSAAsyncSelect или WSAEventSelect, уведомление объявляется с помощью FD_CONNECT, а код ошибки, связанный с FD_CONNECT, указывает либо на успех, либо на конкретную причину сбоя.
Если соединение не установлено немедленно, клиент должен дождаться завершения соединения, прежде чем пытаться установить параметры сокета с помощью setsockopt. Вызов setsockopt во время установления соединения не поддерживается.
Для сокета без установления соединения (например, типа SOCK_DGRAM) операция, выполняемая connect, заключается лишь в установлении адреса назначения по умолчанию, который можно использовать при последующих вызовах send/WSASend и recv/WSARecv. Любые дейтаграммы, полученные с адреса, отличного от указанного адреса получателя, будут отброшены. Если элемент адреса структуры, заданный name, заполнен нулями, сокет будет отключен. Тогда удаленный адрес по умолчанию будет неопределенным, поэтому вызовы send/WSASend и recv/WSARecv вернут код ошибки WSAENOTCONN. Тем не менее, sendto/WSASendTo и recvfrom/WSARecvFrom по-прежнему можно использовать. Назначение по умолчанию можно изменить, просто снова вызвав соединение, даже если сокет уже подключен. Любые дейтаграммы, поставленные в очередь на получение, отбрасываются, если имя отличается от предыдущего соединения.
Для сокетов без установления соединения name может указывать любой действительный адрес, включая широковещательный адрес. Однако для подключения к широковещательному адресу сокет должен использовать setsockopt для включения опции SO_BROADCAST. В противном случае соединение завершится ошибкой с кодом WSAEACCES.
Когда соединение между сокетами разорвано, сокет, который был подключен, должен быть удален и должен быть создан новый сокет. Когда возникает проблема с подключенным сокетом, приложение должно отказаться от сокета и снова создать сокет, чтобы вернуться к стабильной точке.
Примечание. При выполнении блокирующего вызова Winsock, такого как соединение, Winsock может потребоваться дождаться сетевого события, прежде чем вызов сможет завершиться. В этой ситуации Winsock выполняет ожидание с предупреждением, которое может быть прервано асинхронным вызовом процедуры (APC), запланированным в том же потоке. Выполнение другого блокирующего вызова Winsock внутри APC, прервавшего текущий блокирующий вызов Winsock в том же потоке, приведет к неопределенному поведению и никогда не должно предприниматься клиентами Winsock.
Пример кода
Другой пример использования функции подключения см. в разделе Начало работы с Winsock.
Примечания для разъемов IrDA
- Заголовочный файл Af_irda.h должен быть включен явно.
- Если на уровне доступа к среде обнаруживается существующее соединение IrDA, возвращается WSAENETDOWN.
- Если существуют активные подключения к устройству с другим адресом, возвращается WSAEADDRINUSE.
- Если сокет уже подключен или изменение монопольного/мультиплексного режима не удалось, возвращается WSAEISCONN.
- Если сокет ранее был привязан к имени локальной службы для приема входящих подключений с использованием связывания, возвращается WSAEINVAL. Обратите внимание, что после привязки сокета его нельзя использовать для установления исходящего соединения.
IrDA реализует функцию соединения с адресами вида sockaddr_irda. Как правило, клиентское приложение создает сокет с помощью функции сокета, сканирует ближайшее окружение на наличие устройств IrDA с параметром сокета IRLMP_ENUMDEVICES, выбирает устройство из возвращенного списка, формирует адрес и затем вызывает соединение. Нет никакой разницы между блокирующей и неблокирующей семантикой.
Милан с детства увлекался ПК, и это побудило его проявить интерес ко всем технологиям, связанным с ПК. До прихода в WindowsReport он работал веб-разработчиком. Подробнее
- Сокеты Windows выполняют одну и только одну функцию: обеспечивают связь между вашей ОС и сетевыми службами, такими как TCP/IP. Другими словами, Winsocks предназначены для того, чтобы помочь вам получить доступ к Интернету.
- Но иногда они делают прямо противоположное, например, запрещают пользователям пользоваться Интернетом. Одна конкретная ошибка, препятствующая соединению, связана с отсутствующими записями реестра сокетов Windows. К счастью для вас, у нас есть полные исправления, перечисленные ниже, в вашем распоряжении.
- Узнайте больше об ошибках подключения к Интернету, просмотрев наш специальный раздел и не оставив ни одной нерешенной проблемы.
- Погрузитесь еще глубже в мир устранения неполадок, изучив наш специальный центр ошибок Windows 10.
Для решения различных проблем с ПК мы рекомендуем DriverFix:
Это программное обеспечение будет поддерживать работоспособность ваших драйверов, тем самым защищая вас от распространенных компьютерных ошибок и сбоев оборудования. Проверьте все свои драйверы прямо сейчас, выполнив 3 простых шага:
Доступ к сети имеет решающее значение для пользователей Windows 10, но, к сожалению, многие пользователи Windows 10 сообщают об определенных проблемах с сетью.
Одной из таких проблем является сообщение об ошибке Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, что может помешать вам получить доступ к Интернету. Хотя это серьезная проблема, есть несколько доступных решений.
Вот еще несколько сообщений об ошибках, к которым можно применить те же решения:
- На этом компьютере Windows 10 отсутствует один или несколько сетевых протоколов.
- Winsock отсутствует в реестре
- Не удалось добавить запрошенную функцию, заблокированную групповой политикой.
Как исправить ошибку «Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети»?
1. Удалите ключи Winsock из реестра и переустановите TCP/IP
Это решение требует изменения вашего реестра, поэтому во избежание возможных проблем рекомендуется создать резервную копию разделов реестра, которые вы собираетесь изменить. Для этого выполните следующие действия:
- Нажмите клавишу Windows + R и введите regedit. Нажмите Enter или OK.
- Когда откроется Редактор реестра, перейдите к следующему разделу на левой панели:
- Найдите ключи Winsock и WinSock 2, щелкните каждый из них правой кнопкой мыши и выберите Экспорт.
- Введите имя файла и сохраните его. Эти файлы будут использоваться для резервного копирования, если что-то пойдет не так.
- После создания резервной копии этих ключей удалите их из редактора реестра. Для этого просто щелкните правой кнопкой мыши каждый ключ и выберите в меню "Удалить".
- Закройте редактор реестра. ол>р>
- Нажмите клавишу Windows + R и введите regedit. Нажмите Enter, чтобы запустить редактор реестра.
- После открытия редактора реестра перейдите к
- Нажмите клавишу Windows + X и выберите "Командная строка (администратор)".
- После запуска командной строки введите netsh int ipv4 install и нажмите Enter, чтобы запустить ее.
- Закройте Командную строку и перезагрузите компьютер.
- Откройте Центр управления сетями и общим доступом, выберите подключение и нажмите "Свойства".
- Теперь выберите Интернет-протокол версии 4 (TCP/IPv4) и нажмите "Свойства".
- Когда откроется окно Свойства протокола Интернета версии 4, нажмите кнопку "Дополнительно".
- Чтобы перейти на вкладку WINS, снимите флажок Включить поиск LMHOSTS. Некоторые пользователи также предлагают выбрать параметр «Отключить NetBIOS через TCP/IP», чтобы вы могли попробовать и его.
- Нажмите "ОК", чтобы сохранить изменения. ол>р>
- Нажмите клавишу Windows + X и выберите в меню Командная строка (Администратор).
- После запуска Командной строки вам необходимо ввести следующие строки. Нажмите Enter после каждой строки, чтобы запустить ее:
- netcfg -d
- ipconfig/релиз
- ipconfig/обновить
- ipconfig /flushdns
- ipconfig /registerdns
После удаления ключей Winsock нам необходимо переустановить TPC/IP. Для этого следуйте этим инструкциям:
2. Сбросить Winsock
Если вы получаете сообщение об ошибке Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, вам необходимо выполнить сброс Winsock, чтобы исправить это. Для этого выполните следующие действия:
3. Сбросить TCP/IP с помощью командной строки
Чтобы решить эту проблему, пользователи предлагают сбросить TCP/IP с помощью команды netsh в командной строке. Для этого выполните следующие действия:
Стоит отметить, что иногда вы можете получить сообщение в командной строке о том, что Не удалось выполнить сброс. Доступ запрещен. Если вы получили это сообщение, вам необходимо сделать следующее:
После внесения изменений в редакторе реестра можно попробовать снова запустить командную строку и команду netsh int ip reset.
4. Обновите/удалите драйверы
Записи реестра сокетов Windows, необходимые для подключения к сети, отсутствуют сообщение об ошибке может появиться после обновления Windows 10, и несколько пользователей сообщили, что сообщение об ошибке было исправлено после загрузки последних версий драйверов для их устройств. р>
Чтобы загрузить последние версии драйверов, просто посетите веб-сайт производителя материнской платы или сетевой карты и загрузите последние версии драйверов для своего устройства.
Мы также настоятельно рекомендуем DriverFix автоматически загружать все устаревшие драйверы на ваш компьютер. Этот инструмент защитит вашу систему, так как вы можете вручную загрузить и установить неправильную версию драйвера.
Немногие пользователи также предлагают удалить драйверы из диспетчера устройств. Для этого выполните следующие действия:
Если проблема не устранена с драйверами по умолчанию, попробуйте обновить их до последней версии, следуя приведенным выше инструкциям.
5. Отключить IPv6
Согласно пользователям, сообщение об ошибке отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, может быть вызвано IPv6, поэтому для решения этой проблемы пользователям рекомендуется отключить IPv6. Для этого выполните следующие действия:
Кроме того, вы можете отключить IPv6 в редакторе реестра, выполнив следующие действия:
клавиша на левой панели.
6. Отключить сетевые адаптеры
Это простое решение, но оно может оказаться полезным. Чтобы отключить сетевой адаптер, выполните следующие простые действия:
7. Отключить прокси
Совет эксперта. Некоторые проблемы с ПК трудно решить, особенно когда речь идет о поврежденных репозиториях или отсутствующих файлах Windows. Если у вас возникли проблемы с исправлением ошибки, возможно, ваша система частично сломана. Мы рекомендуем установить Restoro, инструмент, который просканирует вашу машину и определит, в чем проблема.
Нажмите здесь, чтобы загрузить и начать восстановление.
Чтобы отключить прокси, вам необходимо сделать следующее:
Кроме того, вы можете проверить прокси-сервер, выполнив следующие действия:
8. Используйте команду установки netsh int ipv4
Чтобы решить эту проблему, пользователи предлагают использовать команду netsh в командной строке. Для этого выполните следующие действия:
9. Сбросьте прошивку роутера
Немногие пользователи утверждают, что их проблема была решена после сброса прошивки маршрутизатора.
Это сложный процесс, и если вы не будете осторожны, вы можете привести к необратимому повреждению вашего маршрутизатора, поэтому обязательно ознакомьтесь с инструкциями по эксплуатации вашего маршрутизатора.
10. Получите ваш IP-адрес и DNS автоматически
Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, иногда может появляться сообщение об ошибке, если ваша конфигурация IP-адреса и DNS-адреса неверна.
Чтобы решить эту проблему, вам потребуется автоматически получить свой IP-адрес и DNS. Для этого выполните следующие действия:
11. Перезагрузите маршрутизатор
Иногда такие проблемы можно решить, просто перезапустив маршрутизатор. Для этого просто нажмите кнопку питания на маршрутизаторе, чтобы выключить его. Подождите минуту или две и снова включите маршрутизатор.
Если проблема не устранена, вы можете перезагрузить маршрутизатор. Если вы решите сбросить настройки маршрутизатора, вы вернете его к заводским настройкам, поэтому вам, возможно, придется снова настроить беспроводную сеть. Чтобы сбросить настройки маршрутизатора, ознакомьтесь с подробным объяснением в руководстве по эксплуатации маршрутизатора.
12. Отключить поиск LMHOSTS
Для решения проблемы отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, некоторые пользователи предлагают отключить поиск LMHOSTS. Для этого просто следуйте этим инструкциям:
13. Попробуйте использовать проводное соединение
Иногда эти проблемы могут быть вызваны использованием адаптера HomePlug, и для решения этой проблемы настоятельно рекомендуется подключить компьютер к маршрутизатору с помощью кабеля Ethernet.
14. Перезагрузите компьютер
В некоторых случаях отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, что можно исправить путем надлежащего перезапуска Windows 10.
Выключить компьютер не получится, поскольку Windows 10 сохраняет часть ваших данных, когда вы выключаете компьютер, чтобы ускорить запуск. Поэтому вместо того, чтобы выключать компьютер, просто перезагрузите его, нажав кнопку перезагрузки, и проверьте, решена ли проблема.
15. Используйте команду ipconfig
Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети. Это можно исправить с помощью команды ipconfig из командной строки. Для этого вам необходимо выполнить следующие действия:
После того, как вы ввели эти команды, перезагрузите компьютер и проверьте, решена ли проблема.
16. Установите DNS на 8.8.8.8
Чтобы изменить DNS, вам нужно будет повторить шаги, аналогичные Решению 10. Когда вы откроете окно свойств Интернет-протокола версии 4, просто выберите «Использовать следующие адреса DNS-серверов» и введите 8.8.8.8 в качестве предпочтительного и 8.8. 4.4 в качестве альтернативного DNS-сервера.
Сообщение об ошибке
Отсутствуют записи реестра сокетов Windows, необходимые для подключения к сети, может вызвать множество проблем, но, надеюсь, вам удалось решить эту проблему, воспользовавшись одним из наших решений.
Не забудьте сообщить нам, какой из этих методов сработал для вас, нажав на раздел комментариев ниже.
По-прежнему возникают проблемы? Исправьте их с помощью этого инструмента:
Читайте также: