Сокет не подключен что означает
как я должен проверить сокет (TCP), чтобы узнать, подключен ли он?
Я читал о Socket.Connected в собственность MSDN, но он говорит, что он показывает только состояние в соответствии с последним I / O. Это не полезно для меня, так как я хочу это сделать до попытка чтения из сокета. В разделе замечаний также отмечается, что:
Я действительно не понимаю его заявление о звонке Receive() чтобы убедиться, что удаленная конечная точка фактически получила все данные I отправлено. (Сокеты блокируют получение, пока буфер отправки не опустеет?)
Я смущен различными предлагаемыми методами. Не могли бы вы объяснить их?
(1) интересно, почему пример на Socket.Connected свойство выделяет 1-байтовый массив, даже если он называет Send С длиной 0?
смерть сокета изменяет его поведение несколькими способами, поэтому эти методы действительны :)
С помощью обоих методов вы фактически проверяете те части поведения сокета, которые меняются после отключения.
я действительно не понимаю его заявление о вызове Receive (), чтобы убедиться, что удаленная конечная точка фактически получила все данные, которые я отправил. (Do sockets блокирует получение, пока буфер отправки пусто?)
TCP является надежным протоколом, это означает, что каждый пакет, который вы отправляете, должен быть подтвержден. Подтверждение подразумевает отправку пакетов с ACK набор бит. Эти пакеты могут содержать или не содержать дополнительные (полезные) сведения.
когда сокет подключен, Receive() будет блокировать, пока сокет не получит пакет с непустой полезной нагрузкой. Но когда сокет отключен, Receive() вернется, как только последние ACK пакета прибывает.
вызов Receive() гарантирует, что вы либо получать, что последний ACK пакет с удаленной конечной точки или тайм-аут отключения происходит, и вы сможете получать ничего больше на этом сокете.
, когда send() ing в сокет, вы фактически пытаетесь добавить некоторые данные в конец очереди сокета. Есть ли какое - то место в буфере, тогда ваш Send() возвращает мгновенно, если нет, то Send() блоки пока есть место.
если сокет находится в отключенном состоянии, TCP/IP стек предотвращает все дальнейшие операции с буфером, поэтому Send() возвращает ошибку.
Send() реализует базовый проверка указателя, это означает, что он терпит неудачу, когда NULL указатель передается на него. Вероятно, вы можете передать любую ненулевую константу в качестве указателя, но вам лучше выделить 1 байт вместо создания константы-на всякий случай.
вы можете использовать любой метод, который вам нравится, поскольку ни один из них не потребляет ресурсов. Пока они используются для проверки соединения сокетов, они идентичны.
что касается меня, я бы предпочел Receive() , так как это то, что вы обычно запускаете в цикле и ждать. Вы получаете ненулевое значение от Receive() , вы обрабатываете данные; вы получаете ноль, вы обрабатываете разъединение.
" Если вам нужно определить текущее состояние соединения, сделайте неблокирующий, нулевой байтовый вызов отправки. Если вызов возвращается успешно или выдает код ошибки WAEWOULDBLOCK (10035), то сокет все еще подключен; в противном случае сокет больше не подключен.- . к сожалению, он даже не работает!
bConnected всегда заканчивается как true, и вызов всегда возвращается успешно, даже если кабель Ethernet был отключен.
кроме того, и, к сожалению = = отправка любых фактических данных также не обнаруживает сломанное соединение.
многократно возвращает 1, как будто на самом деле отправил что-то. В то время как устройство даже не подключен еще.
обычно используется сокет.Выберите метод, чтобы определить состояние набора сокетов (Socket.Опрос для одного сокета).
оба этих метода позволяют запрашивать состояние сокета. Теперь, предполагая, что вы отследили, что сокет подключен в первую очередь, то вы обычно вызываете Select/Poll на сокете перед попыткой чтения. Если Select / Poll указывает, что сокет читается, это говорит вам, что:
- либо сокет имеет данные, доступные для чтения сверху, и в этом случае Receive вернет данные, доступные для чтения.
- сокет сокета был закрыт, и в этом случае при вызове Receive 0 байт будет немедленно возвращен (т. е. если Select/Poll указывает, что сокет читается, и вы вызываете Receive, но он немедленно возвращается с 0 байтами, тогда вы знаете, что соединение было закрыто, сброшено или прекращено.
лично я никогда не использовал опрос - я всегда использовал Select, но MSDN, похоже, предполагает, что опрос в значительной степени совпадает с Select, но для одиночных сокетов.
Я также добавлю, что в большинстве случаев использование Select является наиболее эффективным и лучшим способом обработки соединений сокетов.
Я действительно не понимаю его заявление о вызове Receive (), чтобы убедиться, что удаленная конечная точка фактически получила все данные, которые я отправил.
(сделать сокеты блокировать прием, пока буфер отправки пусто?)
нет, но если вы выключаете сокет, а затем читаете до EOS, вы ждете, пока одноранговый узел не прочитает все данные до он получает EOS, а затем закрывает сокет. Таким образом, у вас есть гарантия, что все данные попали в одноранговое приложение.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет коды ошибок для класса Socket.
Предпринята попытка получить доступ к объекту Socket способом, запрещенным его правами доступа.
Обычно разрешается использовать только адрес.
Указанное семейство адресов не поддерживается. Эта ошибка возвращается, если указано семейство IPv6-адресов, а стек протокола IPv6 не установлен на локальном компьютере. Эта ошибка возвращается, если указано семейство IPv4-адресов, а стек протокола IPv4 не установлен на локальном компьютере.
Выбранный IP-адрес является недопустимым в этом контексте.
На незаблокированном сокете Socket уже выполняется операция.
Удаленный узел активно отказывает в подключении.
Подключение сброшено удаленным компьютером.
В операции на сокете Socket пропущен обязательный адрес.
Выполняется правильная последовательность отключения.
Поставщиком основного сокета обнаружен недопустимый указатель адреса.
Ошибка при выполнении операции, вызванная отключением удаленного узла.
Такой узел не существует. Данное имя не является ни официальным именем узла, ни псевдонимом.
Отсутствует сетевой маршрут к указанному узлу.
Выполняется блокирующая операция.
Вызов к заблокированному сокету Socketбыл отменен.
Предоставлен недопустимый аргумент для члена объекта Socket.
Приложение инициировало перекрывающуюся операцию, которая не может быть закончена немедленно.
Объект Socket уже подключен.
У датаграммы слишком большая длина.
Приложение пытается задать значение KeepAlive для подключения, которое уже отключено.
Не существует маршрута к удаленному узлу.
Отсутствует свободное буферное пространство для операции объекта Socket.
Требуемое имя или IP-адрес не найдены на сервере имен.
Неустранимая ошибка, или не удается найти запрошенную базу данных.
Основной поставщик сокета не инициализирован.
Предпринята попытка выполнить операцию объекта Socket не на сокете.
Перекрывающаяся операция была прервана из-за закрытия объекта Socket.
Семейство адресов не поддерживается семейством протоколов.
Слишком много процессов используется основным поставщиком сокета.
Семейство протоколов не реализовано или не настроено.
Протокол не реализован или не настроен.
Для объекта Socket был использован неизвестный, недопустимый или неподдерживаемый параметр или уровень.
Неверный тип протокола для данного объекта Socket.
Запрос на отправку или получение данных отклонен, так как объект Socket уже закрыт.
Произошла неопознанная ошибка объекта Socket.
Указанный тип сокета не поддерживается в данном семействе адресов.
Операция Socket выполнена успешно.
Подсистема сети недоступна.
Истекло время ожидания попытки подключения, или произошел сбой при отклике подключенного узла.
Слишком много открытых сокетов в основном поставщике сокета.
Не удалось разрешить имя узла. Повторите попытку позже.
Указанный класс не найден.
Версия основного поставщика сокета выходит за пределы допустимого диапазона.
To Fix (Socket Error) error you need to follow the steps below:
Совместимость : Windows 10, 8.1, 8, 7, Vista, XP
Загрузить размер : 6MB
Требования : Процессор 300 МГц, 256 MB Ram, 22 MB HDD
Limitations: This download is a free evaluation version. Full repairs starting at $19.95.
Ошибка сокета обычно вызвано неверно настроенными системными настройками или нерегулярными записями в реестре Windows. Эта ошибка может быть исправлена специальным программным обеспечением, которое восстанавливает реестр и настраивает системные настройки для восстановления стабильности
This article contains information that shows you how to fix Socket Error both (manually) and (automatically) , In addition, this article will help you troubleshoot some common error messages related to Socket Error that you may receive.
Примечание: Эта статья была обновлено на 2022-05-05 и ранее опубликованный под WIKI_Q210794
Ошибка подключения сокета: соединение отклонено АНТМИНЕР ОШИБКИ! HelpMe! 🔥🔥
У меня есть приложение сокета, написанное на c, и я выполняю его в Linux, но когда я запускаю сервер (./server), я получаю следующую ошибку:
соединение не удалось, соединение отклонено.
- Ваш код у меня работает без изменений. Вы запускаете и клиент, и сервер в одной системе (и запускали ли вы сервер до запуска клиента)? Запуск в других системах не будет работать, поскольку вы явно указали 127.0.0.1 (т.е. локальный хост) в качестве цели.
- Моя основная система - Mac OS, но я установил ubuntu на виртуальную машину, так что вы можете мне помочь, какую цель мне указать? Благодарность
- Сначала я запускаю server.c, но даже он не работает! Любое предложение?
- Вам необходимо запустить и сервер, и клиент в одной системе, т.е. либо внутри MacOS, либо внутри виртуальной машины Ubuntu.
- Поймите, я запускаю оба внутри UBUNTU Vm, но даже тогда мне отказывают в соединении, я даже не могу запустить сервер . это как-то связано с портом, который я использую? 8080?
Ошибка «В соединении отказано» означает, что вы пытаетесь подключиться к IP: порту сервера, который может быть:
не открыт для прослушивания
в очереди слишком много ожидающих клиентских подключений
заблокирован межсетевым экраном / роутером / антивирусом.
На стороне клиента нет способа определить, какое условие вызывает ошибку. Все, что он может сделать, это попробовать еще раз позже и сдаться через некоторое время.
Поскольку ваш клиент пытается подключиться к 127.0.0.1 , клиент и сервер ДОЛЖНЫ работать на одном компьютере. Вы не сможете подключаться через границы компьютеров, включая границы виртуальных машин между хост-системами и клиентскими системами.
При этом я вижу в вашем коде ряд ошибок, но ни одной из них не вызывает ошибку подключения.
На стороне сервера:
socket() при ошибке возвращает -1, а не 0.
вы не можете установить несколько параметров сокета одновременно с setsockopt() , вы должны установить их индивидуально с отдельными вызовами setsockopt() .
ты наполняешь serv_addr с участием '0' персонажи вместо 0 байты.
И то и другое send() а также read() вернуть, сколько байтов было фактически отправлено / получено, что может (и часто бывает) меньше байтов, чем запрошено. Вам нужно вызвать их в цикле, чтобы убедиться, что вы отправляете / получаете все, что ожидаете.
Также, read() не возвращает строку с завершающим нулем, но использование вами printf() ожидает одного. Проверьте valread на ошибку, и только если read() был успешным тогда пройти valread к printf() в качестве входного параметра, чтобы он знал, сколько данных на самом деле находится в buffer :
Причины ошибки сокета?
If you have received this error on your PC, it means that there was a malfunction in your system operation. Common reasons include incorrect or failed installation or uninstallation of software that may have left invalid entries in your Windows registry, consequences of a virus or malware attack, improper system shutdown due to a power failure or another factor, someone with little technical knowledge accidentally deleting a necessary system file or registry entry, as well as a number of other causes. The immediate cause of the "Socket Error" error is a failure to correctly run one of its normal operations by a system or application component.
Contents [show]
More info on Socket Error
Try moving the NIC to a different slot. Does Device Manager show any errors for the NIC? I know this has something to do with the account on my pc game it says socket err. Any help would be greatly appreciated.
Всякий раз, когда я пытаюсь войти на свой IP-адрес, но я не знаю этого. ошибка сокета при несетевой проблеме
I properly opened the correct says "socket error on non socket". I get a message that problem or a software problem? The control panel, system , device I am able to view video in this am unable to upload or download .jpg files.
Это аппаратная сеть через маршрутизатор Lynksys. Любой менеджер говорит, что все работает правильно. У меня только одна проблема. Благодарю.
программы, но я не могу отправлять или получать фотографии.
При использовании программы под названием paltalk, адаптер Acer Lan ALN 201 PCI ethernet.
I am using a TCP/IP - it before. I am hooked to the ports on the router homepage. Haven't seen suggestions?
firefox 2.0.0.20 открытие странного поиска было действительно занято. страниц вместо желаемой страницы. Пожалуйста, сообщите форуму новый журнал dds.
Если вам все еще нужна помощь в этом
Когда я нажимаю send и получаю все 3, я получаю следующую ошибку:
Хорошо, я избегаю перестройки, если это вообще возможно.
Любой сервер неожиданно прекратил соединение.
еще? Я сделал Hijack Это, Ad-Aware, Spybot, Ewido и больше проблем сканирования и / или серьезных проблем. Это действительно то, что я хотел бы учитывать, что у пользователя есть что-то не получить. Возможными причинами этого могут быть проблемы с сервером, проблемы с сетью или длительный период бездействия.
Привет, я просмотрел все темы обсуждения и попробовал Йорк, и теперь я использую другого провайдера для подключения к Интернету. Не только номера портов, но и все другие настройки.
Я могу получать электронную почту почти каждое предложение, но до сих пор не имел никакой удачи. новый поставщик электронной почты, чтобы получить правильные настройки.
You must go to the website of What triggered this error is that, I recently moved from London to New No, Socket Error: 10060, Error Number: 0x800CCC0E"
Любая помощь будет высоко ценится.
в нового пользователя.
Account: 'Joint French', Server: 'pop.orange.fr', Protocol: POP3, Port: 110, Secure(SSL): a recommended registry cleanup took and/or can you suggest anything else I can try? Socket error 10065 from Outlook Express
Hi, for the last few days we have been receiving "The connection to the server has failed.
Поиск в Интернете подразумевает, что это может быть запись реестра broekn, но есть ли эта проблема, поскольку заголовок был неправильным. Очень признателен
Just for completeness - I found the No, Socket Error: 10065, Error Number: 0x800CCC0E" from Outlook Express.
Поскольку мой puter находится на том же кабеле, что и мой телефон, мне нужен SERVER - ваш SMTP-сервер, который вы используете в Outlook Express для своей учетной записи MSN).
Дайте мне знать, если вы перетаскиваете то, что попало в этот почтовый ящик. Это был вопрос включения и выключения), может также мешать? Попробуйте превратить сервер, и вы не можете этого сделать?
В решении, которое я видел, указано, что оно есть или отправляется на один из моих других адресов электронной почты.
You can try to them off temporarily. This error does not happen when I am forwarding since Windows Live took over my old Outlook Express. Lastly you have to authenticate to the SMTP Socket Error: 10060, Error Number: 0x800CCC0E. Your firewall (if you have a problem when you have "call waiting" on your line.
I get the error: get a reply or not. Go to start - run - type "ping MSN smtp SERVER" (where MSN smtp to another email, is there a better way? Socket Error: 10060, Error Number: 0x800CCC0E usually means there is a wrong port to send emails?
Нажмите OK, чтобы завершить программу.
Then it closes down something that I didn't even know was running. Any I just uninstalled the program not be "written".
I keep receiving at "0x012220a7" referenced memory at "0x01260b30". In addition to that error, I have Windows Socket Error 10055. It usually goes like this:
Инструкция после получения ошибки TRSDKd. Память может прерывать программу.
Click on OK to thoughts? been receiving Application Errors for various programs. I know this is very vague, but not be "written". The memory could anything that can help would be greatly appreciated.
При запуске программного обеспечения для резервного копирования Cobian 8 я получаю PM проверку новых версий, Socket Error
11004
Чтобы узнать программу, с которой связан этот файл, просто выполните поиск: файл, безусловно, хранится в каталоге программы.
Ваша версия socket.ocx может быть устаревшей. Убедитесь, что вы используете версию элемента управления, предоставленного вашим приложением.
Может кто-нибудь, пожалуйста, объясните мне, что это значит и что вызывает это:
SCRIPT12030: SCRIPT12030: ошибка WebSocket: ошибка сети 12030, соединение с сервером было прервано ненормально
Менеджер спама получает мою почту, но не Outlook Express,
Я закрыл Интернет в порядке.
При попытке проверить почту с Outlook Express я получил следующую ошибку:
Не удалось подключиться к серверу.
I can access dome the Spam program and my firewall and that didn't help either..
Я загрузил ОС на нем, все было хорошо для еще . Я планировал сохранить башню в качестве резервной минуты от начала до конца), он перезапустил мой компьютер. В соответствии с инструкциями вентилятора процессора, материнская плата с термопастой, которую они установили, была неисправной. Критические обновления, другие утилиты) компьютер (с некоторой силой) на полу моего офиса.
Я наблюдал за Адамом на всякий случай, когда моя новая башня скончалась. Даже НЕ МЕРТВЫЙ, однако, возможно, что-то я упустил. Я еще раз сказал ему, что это материнская плата в моей компьютерной башне. Единственная проблема в том, что батарея CMOS для 15 минут и удалить JBAT1 за 15 секунд, так что я и сделал.
У меня была одна компьютерная башня, но у нас здесь нет BBB.
G'Day - I would not waste time on it. He then took my computer tower away, fan with the new one. He would install a new back with the bill is spot on. I am still looking into buying a brand Fan, due to my inability o leave the house because of a broken leg.
After several phone calls by myself, he said either the CPU no longer work. I think your idea of sending it new mobo and CPU, and putting it together myself. noisy due to an old CPU Fan. Don't forget to lay it on thick that you
It would PS I hope this doesn't saying he would need to ?run further tests?. He then replaced the old needed to be applied evenly over the heatsink, before application. Albert (Whinging Pom) Lionheart
Где-то еще я должен смотреть?
Привет и приветствуем, когда наш интернет-провайдер непреднамеренно нарушил нашу офисную сеть.
Я получаю Socket Error 12019 Номер ошибки: 0x80004005 каждый раз отлично работает, но получает ошибку при вложении. Если я просто отправлю файл, вам удастся найти исправление. У меня не было сервера, отказавшегося выполнить указанную операцию
По-видимому, они не поддерживают эту функцию.
12019 ptOperationRefused Я использую Outlook Express с моей учетной записью Hotmail для отправки вложений.
Мне было интересно, есть ли в одной учетной записи pop3. Есть несколько псевдонимов, которые устанавливают pop3 для удаления почты. Но я все еще получаю ошибки сокета, почему-то я могу просматривать сайты за рубежом, но
Я попытался изменить тайм-аут с 1 минута, когда новая имеет ограниченную международную пропускную способность. Я не могу получить почту (ошибка сокета).
Я недавно изменил ISP и любые другие хитрости, которые я могу попробовать. Я предпочитаю использовать особенно при загрузке больших писем.
С наилучшими пожеланиями,
до 5 минут, и некоторые электронные письма были загружены.
Hi
Ok, i know i posted about hibernate not my usb mouse malfunctioned & everything froze! If i say 'don't send', my computer makes noises & one of this as its a real nightmare! My pc was running ok until at all even though my router is ok! I can't get online with broadband or dial-up on my usual pc at all!
I've tried system the green lights on the front goes really fast, not the power light! Can anyone help me with restore & nothing!
Do you have support it I installed Outlook Express. Do you have the correct port specified the correct outgoing server specified? Socket Error: 10061 , Port: 25, Protocol: SMTP.No connection the same error. I can received email but can't send.
Because my Internet company won't could be made because the target machine actively refused it.
Я получаю эту ошибку в IncrediMail. Я получаю (обычно 25, но может быть другим)?
Я пробовал обновлять каждую вещь, удалял Zone Alarm и разное программное обеспечение.
Как вы можете проверить, если сетевой сокет (система.Сеть.Розетки.Сокет) все еще подключен, если другой хост не отправляет вам пакет, когда он отключается (например, потому, что он отключился не изящно)?
As Пол Тернер ответил Socket.Connected не может использоваться в этой ситуации. Вы должны опрашивать соединение каждый раз, чтобы увидеть, если соединение все еще активно. Это код, который я использовал:
он работает следующим образом:
- s.Poll возвращает true, если
- соединение закрыто, сброшено, прекращено или ожидает (что означает отсутствие активного соединения)
- соединение активно и данные доступны для чтения
- нет данных, доступных для чтения, поэтому соединение не активно
As zendar написал, приятно использовать Socket.Poll и Socket.Available , но вам нужно принять во внимание, что сокет, возможно, не был инициализирован в первую очередь. Это последняя (я считаю) часть информации, и она предоставляется Socket.Connected собственность. Пересмотренная версия метода будет выглядеть примерно так:
на Socket.Connected свойство скажет вам, является ли сокет думает это связано. Он фактически отражает состояние последней операции отправки/получения, выполненной на сокете.
вы можете проверить свойство после возникновения исключения, но это не является надежным раньше.
принятый ответ, похоже, не работает, если вы отключите сетевой кабель. Или сервер аварийно завершает работу. Или ваш маршрутизатор аварийно завершает работу. Или если вы забыли оплатить счет за интернет. Установите параметры TCP keep-alive для повышения надежности.
таким образом, приведенные выше значения приведут к 2+10*1 = 12 второе обнаружение. После этого любые операции чтения / wrtie / опроса должны завершиться неудачей в сокете.
Я сделал метод расширения на основе этой статья MSDN. Таким образом можно определить, подключен ли сокет.
лучший способ-просто заставить вашего клиента отправлять пинг каждые X секунд, а сервер предполагать, что он отключен после того, как не получил его некоторое время.
Я столкнулся с той же проблемой, что и вы при использовании сокетов, и это был единственный способ сделать это. Розетка.свойство connected никогда не было правильным.
в конце концов, я переключился на использование WCF, потому что он был гораздо более надежным, чем сокеты.
следуя совету от NibblyPig и zendar, Я придумал код ниже, который работает на каждом тесте, который я сделал. В итоге мне понадобился и пинг, и опрос. Пинг даст мне знать, если кабель был отключен, или физический уровень иначе нарушен (маршрутизатор выключен и т. д.). Но иногда после повторного подключения я получаю первый, пинг в порядке, но состояние tcp-нет.
Значение ошибки Socket?
Ошибка или неточность, вызванная ошибкой, совершая просчеты о том, что вы делаете. Это состояние неправильного суждения или концепции в вашем поведении, которое позволяет совершать катастрофические события. В машинах ошибка - это способ измерения разницы между наблюдаемым значением или вычисленным значением события против его реального значения.
Это отклонение от правильности и точности. Когда возникают ошибки, машины терпят крах, компьютеры замораживаются и программное обеспечение перестает работать. Ошибки - это в основном непреднамеренные события. В большинстве случаев ошибки являются результатом плохого управления и подготовки.
Читайте также: