Ошибка сокет сервера
Ошибка сокет сервера
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
Ошибка сетевого доступа к серверу (Windows Sockets — 10060 (0x0000274C))
Хочу оставить заметку по данной проблеме. Столкнулся с этим после установки релиза 8.3.6.1977 сервера 1С. Кстати, об основных нововведениях данной версии неплохо описано в статье: http://1c-programmer-blog.ru/platforma/obzor-1spredpriyatie-8-3-6.html .
Так вот, после установки сервера стала выпадать упомянутая в названии темы ошибка. Сразу, как обычно, подумал — кривая обнова, надо поставить старую. Но, после установки старой, проблема никуда не исчезла. Да, кстати, при загрузке платформы с самого сервака проблем не возникало. Ошибка вылетала при запуске с клиентских компьютеров.
После двух часов плевков, матерков и ударов головой о стену решил произвести выгрузку ИБ (т.к. при запуске с сервера проблем не было, то выполнить это не составило труда) и перекинуть их с Microsoft SQL в файловый вариант, чтобы бухгалтерия не простаивала.
Далее, в спокойной обстановке, начал разбираться с ситуацией. Пообщавшись с гуглом, понял, что толковых советов в инете нет. То предлагают поотключать все фаерволы на сервере (что для сервера данных смерти подобно), то еще какие нибудь глупости — типа переустановки всей системы.
В общем, пришлось искать решение самому.
Немного поэкспериментировав с кластером серверов, решил просмотреть правила для входящих подключений в брандмауэре:
Нашел правило «Разрешение подключения к Кластеру 1С». После чего, побегав по закладкам данного правила, остановился на закладке «Дополнительно»:
И тут меня осенило — на всех компьютерах нашей сети установлены профили «Публичный», а в правиле как раз на нем нет галочки. После того как я отметил этот профиль, правило стало распространяться и на него и, соответственно, все заработало.
Признаюсь честно, почему возникла такая проблема — так и не понял, возможно, обновление добавляет какие то коррективы в правила.
Кстати, побегав по сети, я понял, что данная проблема актуальна не только для описанного мной случая. Ошибка 10060 во всех случаях связана с невозможностью выполнить соединение с сервером. Таким образом можно выделить несколько основных причин:
- это проблемы с самой сетью (тупо нет связи);
- неверно заданы параметры соединения;
- соединение блокирует один из фаерволов либо антивирус (нужно проверить правила для входящих подключений, а в антивирусе, возможно, следует добавить необходимые порты либо IP адреса, с которых выполняется подключение в исключения);
- ну и последний вариант — проверьте, а запущено ли вообще серверное программное обеспечение.
Специальные предложения
Новый вопрос
Очень часто за новыми релизами начинаешь наблюдать разного рода странности, например в виде игнорирования процедуры регистрации компоненты COM-соединения. Тут соответственно забыли написать правила разрешения в брэндмауэре.
Откровенно говоря что-то странное у 1С творится. Одно только неимоверное количество обновлений типовых конфигураций в этом квартале чего стоит.
Но пытливый ум все победит. Спасибо за статью 😉
(0) ну во-первых однозначный «лайк», как выразился Вячеслав. Но меня тут же взволновал другой вопрос.
* то что разрешения на кластер выставлены НЕ для публичного профиля — это понятно. Как говорят наши специалисты по ИТ безопасности между серверами приложений и клиентами приложений весь трафик должен идти через «частные сети», то есть такие сети, в которых существуют средства обеспечения безопасности (причем безопасники всегда хотят чтобы это был hardware firewall). Наши администраторы сделали предположение, что кто-то ознакомился со стандартами ИТ безопасности и включил это в настройку.
* но вот то, что у вас на компьютерах включен «публичный» профиль — вот это вызывает как минимум вопросы.
Предположу что это сделано в целях всё той же безопасности, но такая настройка у меня вызывает большие сомнения. Если клиенты действительно публичные — доступ через HTTP/S и никакого другого. Учитывая что у вас Бухгалтерия — то тут проблем с НЕуправляемыми формами быть не должно.
Если кластер развернут на облачных площадках и нужно обеспечить доступ из любой сети — то вопрос «к шифрованным тунелям» и облачным AD от того же Azure (я так понимаю стэк то Microsoft).
Ошибка Сокета Сервера
у меня есть ошибка в этой строке:
83.4.200.1 — это мой ip, когда я ставлю туда 127.0.0.1 или 192.168.1.2 с тем же портом, все работает идеально. Я проверил все порты, написав netstat -a -n , но 2106 там нет.
Большое спасибо за чтение этого, я надеюсь, что вы можете помочь мне с моей проблемой
3 Ответа
Ваш адрес маршрутизатора- 83.4.200.1 . Важно отметить, что это не тот адрес, на который отвечает ваш компьютер, а скорее внутренний сетевой адрес 192.168.1.2 . Если вы хотите подключиться к своей программе извне маршрутизатора, вам необходимо настроить переадресацию портов для 2106 на маршрутизаторе.
1. Если вы хотите получить доступ к этому серверу с IP: «83.4.200.1» через интернет, то он должен будьте вашим статическим ip, а не динамическим.
2. Попробуйте запустить этот код с частным ip-адресом или публичным ip-адресом, который назначен вашему компьютеру в LAN (ie. Without internet..JUST WITH WIRELESS CONNECTION).
3. Частный ip или публичный ip не имеет значения, пока и если вы не находитесь на INTERNET.. ДО ТЕХ ПОР ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ОБА, КАК ЕГО LAN.
4. Частные диапазоны ip-адресов
Класс : 10.0.0.0 — 10.0.0.255 Класс В: 172.16.0.0-172.31.255.255 C класс : 192.168.0.0 — 192.168.255.255
5. Public предоставляется вашим поставщиком услуг, который будет любым OUT из диапазона private ip. Если ваш ip-адрес не является статическим, вряд ли есть или нет ваших шансов получить доступ к серверу через интернет, есть сайты, которые дают статический ip-адрес из ваших динамических IP-адресов.
83.4.200.1 — это мой ip
Это адрес IP вашего маршрутизатора.
Это не адрес IP хоста, на котором вы запускаете свой код, поэтому вы не можете привязаться к нему. Вам нужно привязаться к локальному адресу этого хоста и организовать переадресацию портов с маршрутизатора на ваш хост. Чаще всего bind-адрес лучше всего вообще опустить, просто указав порт, и в этом случае сокет будет прослушивать все локальные адреса IP.
Похожие вопросы:
Я создал простую программу сокета в PERL. Программа на стороне сервера, похоже,не завершает создание сокета. Он не печатает инструкцию после создания сокета. Клиент в то время как ожидает сообщения.
Есть программа java, которая пытается вставить около 150k записей в базу данных сервера sql и не удается с ошибкой ниже. [Microsoft] [драйвер SQLServer 2000 для JDBC]ошибка установки сокета Начал.
Я пытаюсь отредактировать прокси-сервер Мэллори, который можно использовать для обнюхивания SSL-трафика. Однако у него есть проблемы с серверами, использующими подключение к серверу, например.
Я только что установил ColdFusion 10 и пытаюсь подключиться к MySql серверу 5.1, но он показывает ошибку ниже: Ошибка проверки соединения для источника данных: cfartgallery2.
Использование apache commons httpClient PutMethod для загрузки doc в sharepoint 2010, поскольку это было большое дело, требует времени, и через некоторое время я бросаю исключение. Ошибка сокета.
У нас есть приложение C/S, написанное на Delphi (клиент и сервер-или промежуточное ПО, если хотите) Для клиентской части мы используем Indy. Для сервера мы используем DXSock. Поскольку DXSock мертв.
Мой код, который я написал для реализации сервера не работает. программа не может bind() сокет адрес правильно и генерировать ошибку. Код #include #include .
Есть ли какое-либо решение для 10038 ошибки сервера .i сделали кодирование в c++; сервер работает нормально от 10 до 12 часов но sudenly он выдает ошибку сокета 10038
Возможно ли установить соединение с Mac-адресом сервера с помощью сокета или мне нужен IP адрес сервера для установки соединения от клиента к серверу с помощью сокета socket = new Socket(serverAddr.
Получение случайных 10060 (conn. Timeout) ошибок на сокете сервера
Несколько пользователей моего программного обеспечения недавно пришли ко мне и сказали, что оно не работает в Windows 8. После расследования выясняется, что по какой-то странной причине мой серверный сокет не всегда принимает подключения, но позволяет им отключиться ,
Даже странно: это также происходит при подключении к localhost, а не только при удаленном доступе к нему.
«Что ты пробовал?»
- Очевидные вещи: отключите брандмауэры (без эффекта), посмотрите, работает ли другое программное обеспечение (работает), попробуйте изменить случайные строки кода (без эффекта).
- Менее очевидные вещи: используйте глобальный WSAStartup вместо одного для каждого клиента или экземпляра сервера (безрезультатно).
Напоминание: точно такой же код прекрасно работает в Windows XP и Windows 7 и также влияет на локальные соединения (не проблема с оборудованием). Кроме того, только треть соединений не работает, остальные работают нормально.
Хорошо, теперь немного реального кода, поскольку он намного полезнее всех этих слов.
Как вы, вероятно, видите, он почти напрямую взят из MSDN и должен быть в порядке. Кроме того, он работает для 2/3 соединений, поэтому я действительно сомневаюсь, что это ошибочный код установки.
Этот код выдает ошибку «[HTTP] Socket error: 10060», поэтому любой код, следующий за ним, не имеет значения.
select call есть потому, что реальный цикл также делает некоторые другие вещи, но я не учел его, потому что он не связан с сокетами.
Еще более странно: по словам Wireshark, Windows, похоже, совершает реальные сетевые ошибки: http://i.imgur.com/BIrbD.png
Некоторое время я пытался понять это, и, возможно, я просто делаю глупости, поэтому я очень ценю все ваши ответы.
Решение
Я целый день работал над этой надоедливой проблемой, и в конце концов мне удалось ее решить, переписав весь сервер с нуля и реализовав его по-другому. Я проследил проблему до setsockopt который, кажется, не занимает SO_RCVTIMEO очень хорошо больше, в результате чего время ожидания становится равным нулю секунд, что делает случайные соединения тайм-аут.
Моя новая реализация больше не использует тайм-аут, и теперь она просто неблокирующая и асинхронная. Работает очень хорошо, но требует гораздо больше кода.
Я предполагаю, что это просто ошибка в Windows 8, которая будет исправлена обновлением до его выпуска. Я сомневаюсь, что Microsoft хотела изменить API сокетов Беркли, как это.
Другие решения
В Windows опция SO_RCVTIMEO запрашивает аргумент DWORD в MILLISECONDS, но не временную структуру.
Увидеть http://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx .
Передача timeval приводит к тому, что окна интерпретируют его как DWORD, а секундный элемент читается как миллисекунды.
Я не знаю, почему аргумент timeval работал в Win предыдущие 8, возможно, это была недокументированная функция, которая была удалена в win 8.
Предложение от 8host.com
Устранение ошибок сокетов в MySQL
Этот мануал является частью серии статей по устранению неполадок и диагностике MySQL. Здесь мы рассмотрим некоторые общие проблемы, с которыми сталкиваются многие пользователи MySQL, и предоставим рекомендации по устранению конкретных ошибок. Также здесь вы найдете ссылки на другие мануалы и официальную документацию по MySQL, которые могут быть полезны в некоторых случаях.
MySQL управляет соединениями с сервером БД через сокет-файл, это специальный файл, который облегчает связь между различными процессами. Сокет-файл сервера MySQL называется mysqld.sock, в системах Ubuntu он обычно хранится в каталоге /var/run/mysqld/. Этот файл создается сервисом MySQL автоматически.
Иногда изменения в системе или в конфигурации MySQL приводят к тому, что MySQL не может прочитать сокет-файл. Из-за этого у вас могут быть проблемы с доступом к вашим базам данных. Наиболее распространенная ошибка сокета выглядит следующим образом:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
Она может возникнуть по нескольким причинам. Существует несколько путей ее устранения.
Одна из основных причин этой ошибки заключается в том, что сервис MySQL остановлен или не запустился с самого начала. А это означает, что сервис просто не смог создать сокет-файл. Чтобы выяснить, является ли это причиной возникновения ошибки в вашем случае, попробуйте запустить сервис через systemctl:
sudo systemctl start mysql
Затем попробуйте снова получить доступ к командной строке MySQL. Если вы все еще получаете ошибку сокета, проверьте расположение, где ваша установка MySQL ищет сокет-файл. Эта информация есть в файле mysqld.cnf:
sudo nano /etc/mysql/mysql.conf.d/mysql.cnf
Найдите параметр socket в разделе [mysqld]:
. . .
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/ mysqld.sock
port = 3306
. . .
Закройте файл. Затем убедитесь, что файл mysqld.sock существует, запустив команду ls в каталоге, где MySQL ищет этот файл:
ls -a /var/run/mysqld/
Если файл существует в этом каталоге, вы увидите его в выводе команды:
. .. mysqld.pid mysqld.sock mysqld.sock.lock
Если же файл не существует, возможно, причина в том, что MySQL пытается его создать, но не имеет для этого соответствующих прав. Вы можете передать все права на файл пользователю и группе mysql:
sudo chown mysql:mysql /var/run/mysqld/
После этого убедитесь, что у пользователя mysql есть необходимые права на каталог. Привилегии 775 подойдут в большинстве случаев:
sudo chmod -R 755 /var/run/mysqld/
Перезапустите MySQL, чтобы снова попытаться создать сокет-файл.
sudo systemctl restart mysql
Затем попробуйте получить доступ к командной строке MySQL еще раз. Если вы все еще сталкиваетесь с ошибкой сокета, вероятно, в вашем экземпляре MySQL существует более глубокая проблема. В этом случае вы должны просмотреть лог ошибок и поискать там какие-либо подсказки.
Читайте также: Устранение неполадок в MySQL
Этот мануал является частью серии статей по устранению неполадок и диагностике MySQL. Здесь мы рассмотрим некоторые общие проблемы, с которыми сталкиваются многие пользователи MySQL, и предоставим рекомендации по устранению конкретных ошибок. Также здесь вы найдете ссылки на другие мануалы и официальную документацию по MySQL, которые могут быть полезны в некоторых случаях.
MySQL управляет соединениями с сервером БД через сокет-файл, это специальный файл, который облегчает связь между различными процессами. Сокет-файл сервера MySQL называется mysqld.sock, в системах Ubuntu он обычно хранится в каталоге /var/run/mysqld/. Этот файл создается сервисом MySQL автоматически.
Иногда изменения в системе или в конфигурации MySQL приводят к тому, что MySQL не может прочитать сокет-файл. Из-за этого у вас могут быть проблемы с доступом к вашим базам данных. Наиболее распространенная ошибка сокета выглядит следующим образом:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
Она может возникнуть по нескольким причинам. Существует несколько путей ее устранения.
Одна из основных причин этой ошибки заключается в том, что сервис MySQL остановлен или не запустился с самого начала. А это означает, что сервис просто не смог создать сокет-файл. Чтобы выяснить, является ли это причиной возникновения ошибки в вашем случае, попробуйте запустить сервис через systemctl:
sudo systemctl start mysql
Затем попробуйте снова получить доступ к командной строке MySQL. Если вы все еще получаете ошибку сокета, проверьте расположение, где ваша установка MySQL ищет сокет-файл. Эта информация есть в файле mysqld.cnf:
sudo nano /etc/mysql/mysql.conf.d/mysql.cnf
Найдите параметр socket в разделе [mysqld]:
. . .
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
. . .
Закройте файл. Затем убедитесь, что файл mysqld.sock существует, запустив команду ls в каталоге, где MySQL ищет этот файл:
ls -a /var/run/mysqld/
Если файл существует в этом каталоге, вы увидите его в выводе команды:
. .. mysqld.pid mysqld.sock mysqld.sock.lock
Если же файл не существует, возможно, причина в том, что MySQL пытается его создать, но не имеет для этого соответствующих прав. Вы можете передать все права на файл пользователю и группе mysql:
sudo chown mysql:mysql /var/run/mysqld/
После этого убедитесь, что у пользователя mysql есть необходимые права на каталог. Привилегии 775 подойдут в большинстве случаев:
sudo chmod -R 755 /var/run/mysqld/
Перезапустите MySQL, чтобы снова попытаться создать сокет-файл.
sudo systemctl restart mysql
Затем попробуйте получить доступ к командной строке MySQL еще раз. Если вы все еще сталкиваетесь с ошибкой сокета, вероятно, в вашем экземпляре MySQL существует более глубокая проблема. В этом случае вы должны просмотреть лог ошибок и поискать там какие-либо подсказки.