Почему не работает сокет
Может ли быть это связано с тем что данный сайт находится в подкаталоге другого сайта на битрикс?
В этом подкаталоге есть символические ссылки на папки "bitrix" и "upload".
Цитата |
---|
Scrooge написал: домен наверно еще не знает про новый сервер? |
Господа! также прошу помощи с работой с сокетами. пытался имя сайта добавить в hosts на 127.0.0.1, файрволл сбрасывал на сервере по умолчанию, аутентификации как в комментарии битрикса нет. по рекомендации битрикса "У вас сервер отдает 404 ответ почему-то. Попробуйте через fsockopen подключиться к серверу, будет такой же ответ.
http://php.net/manual/ru/function.fsockopen.php " проверил что к серверу подключение есть..куда копать непонятно.
Если на сайт через hosts заходите, то будет писать эту ошибку, как домен делегируете, ошибка сама исчезнет.
Цитата |
---|
Scrooge написал: Если на сайт через hosts заходите, то будет писать эту ошибку, как домен делегируете, ошибка сама исчезнет |
Спасибо за комментарий, на самом деле как решение видел на одном из форумов прописать в /etc/hosts на сервере, но не помогло. домен давно делегирован..странность в том, что на данном сервере сегодня переносил еще один битрикс и на нем данной ошибки не было..настройки у сайтов идентичны относительно днс, нс и тд
Цитата |
---|
Александр Гусев написал: значит покопайте, почему 404 для /bitrix/admin/site_checker.php |
Особенно подчеркну предложение Александра. Кроме 404 и 302 ошибка бывает Советую внимательно посмотреть логи и какой ответ сервера. Вот на фото подчеркнуто красным. Чуть ниже надписи Работа с сокетами (check_socket): Fail . Долго искал в поисковике bitrix socket error , нашел интересную и подробную статью Bitrix. Исправляем ошибку «Работа с сокетами - Ошибка! , чтобы сформулировать правильное задание ТЗ , а то вовсе без техподдержки решить проблему после " Полного тестирования системы" /bitrix/admin/site_checker.php?lang=ru
У меня другая ошибка была, неправильный redirect Но суть в том, что эта проблема с сокетом. может быть причиной значительного увеличения нагрузки на сервер.. (фото ДО и после ))
Очень рад что есть такой полезный инструмент "Проверка системы", он позволяет не создавать лишней работы по оптимизация скриптов и вообще избежать много другого страшного гемора, например потерянные ссылки на сайте.
Цитата |
---|
Александр Гусев написал: значит покопайте, почему 404 для /bitrix/admin/site_checker.php |
Особенно подчеркну предложение Александра. Кроме 404 и 302 ошибка бывает Советую внимательно посмотреть логи и какой ответ сервера. Вот на фото подчеркнуто красным. Чуть ниже надписи Работа с сокетами (check_socket): Fail . Долго искал в поисковике bitrix socket error , нашел интересную и подробную статью Bitrix. Исправляем ошибку «Работа с сокетами - Ошибка! , чтобы сформулировать правильное задание ТЗ , а то вовсе без техподдержки решить проблему после " Полного тестирования системы" /bitrix/admin/site_checker.php?lang=ru
У меня другая ошибка была, неправильный redirect Но суть в том, что эта проблема с сокетом. может быть причиной значительного увеличения нагрузки на сервер.. (фото ДО и после ))
Очень рад что есть такой полезный инструмент "Проверка системы", он позволяет не создавать лишней работы по оптимизация скриптов и вообще избежать много другого страшного гемора, например потерянные ссылки на сайте.
Руслан,
Расскажите, пожалуйста, про свою проблему с редиректом и как вы ее решили. Похоже у меня тоже самое. Не могу понять как решить(
Итак, многие сталкиваются с такой проблемой как ошибка сокетов при проверке сайта (а с 30 сентября 2021 так еще больше таких проблем, решение будет ниже):
Из-за этой ошибки сайт не может проверить все остальные параметры и вы видите очень много красных предупреждений: «Замечание. Не удалось проверить из-за ошибки в работе с сокетами». Она бывает при установке сайта на виртуальную машину Битрикс.
Метод 5: Использование другого инструмента тестирования
Способ 1. Включение правила платформы подключенного устройства в брандмауэре Windows
Как выясняется, «ошибка сокета» при запуске теста скорости Интернета с вашим браузером может быть вызвана вашим брандмауэром, даже если вы используете встроенный брандмауэр (брандмауэр Windows). Этот сценарий чаще всего встречается при подключении к Wi-Fi.
По мнению некоторых затронутых пользователей, эта конкретная проблема может возникать из-за правила исходящих вызовов, называемого «Платформа подключенных устройств — Прямой транспорт Wi-Fi (TCP-Out)».
Если та же «Ошибка гнезда» все еще происходит, перейдите к следующему потенциальному исправлению ниже.
Все-равно не помогло?
Первым делом проверьте AAAA-запись у домена, если она есть, удалите.
Не помогло? Проверьте что доступ к админке, где вы запускаете тест, открыт (нет ограничений по IP или других блокировок).
Но если вы используете сторонний AV или брандмауэр, вам может понадобиться внести в белый список домен инструмента SpeedTest, который вы используете, чтобы завершить тест. Кроме того, вам следует отключить постоянную защиту или вообще удалить сторонний пакет.
Однако сообщается, что облачные решения, такие как Onedrive или Google Drive, также вызывают «ошибку гнезда». Если этот сценарий применим, отключите функцию синхронизации в реальном времени в своем облачном решении и посмотрите, решена ли проблема.
Если ничего не помогает, вам следует рассмотреть возможность использования другого инструмента тестирования скорости, который более удобен для вашего интернет-соединения.
Метод 3: Белый список доменов Speedtest (при использовании сторонних AV)
Как выясняется, есть некоторые наборы с чрезмерной защитой, которые просто помечают тест скорости как подозрительное действие — что в конечном итоге вызовет «Ошибка сокета». Avast Antivirus, Kaspersky и Comodo AV обычно сигнализируют о блокировании связи между компьютером и сервером Speedtest.
Если этот сценарий применим, вы должны быть в состоянии решить эту проблему путем внесения белого домена в домен, чтобы можно было запустить тест скорости. Но имейте в виду, что эта операция будет отличаться в зависимости от того, какой AV-пакет вы используете.
Белый список Speed test domain в сторонних настройках AV
Примечание: имейте в виду, что эти шаги будут отличаться в зависимости от нескольких сторонних пакетов.
Кроме того, вы можете просто отключить защиту в реальном времени во время выполнения теста скорости. В большинстве случаев вы можете сделать это прямо из меню панели задач. Просто щелкните правой кнопкой мыши значок, связанный с вашим AV, и найдите опцию, которая отключит защиту в реальном времени.
Щелкните правой кнопкой мыши значок Avast в системном трее, чтобы временно отключить Avast
Если та же проблема сохраняется, и вы используете сторонний пакет безопасности, перейдите к следующему потенциальному исправлению ниже.
Способ 4: удаление стороннего пакета (вместе с остальными файлами)
Если описанный выше метод не помог решить проблему, но вы используете сторонний пакет, который, как вы подозреваете, может быть причиной этой проблемы, единственный способ проверить теорию — это удалить сторонний пакет и убедиться, что вы не выходите за любыми оставшимися файлами, которые все еще могут вызывать такой же тип поведения.
В случае, если вы подозреваете, что ложный положительный результат, вызванный вашим сторонним AV, вызывает проблему, вот краткое пошаговое руководство по удалению стороннего пакета или брандмауэра и гарантии того, что вы не оставите после себя оставшиеся файлы, которые могут все еще выдаю ошибку:
- Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите «appwiz.cpl» и нажмите Enter, чтобы открыть меню «Программы и компоненты».Введите appwiz.cpl и нажмите Enter, чтобы открыть список установленных программ.
- Как только вам удастся попасть в меню «Программы и компоненты», прокрутите вниз список установленных приложений. Делайте это, пока не найдете сторонний A / V или брандмауэр, который, как вы подозреваете, может быть причиной проблемы.
- Когда вы увидите его, щелкните его правой кнопкой мыши и выберите «Удалить» из появившегося контекстного меню.Удаление Avast Firewall
- В мастере удаления следуйте инструкциям на экране, чтобы завершить процесс удаления стороннего AV-приложения.
- После завершения удаления перезагрузите компьютер и следуйте этой статье (здесь) после завершения следующего запуска, чтобы убедиться, что вы также удалите все оставшиеся файлы, которые могут по-прежнему вызывать этот тип поведения.
- Запустите тест скорости еще раз и посмотрите, все ли проблема решена.
Если та же проблема все еще возникает, перейдите к следующему потенциальному решению ниже.
Способ 2: приостановить OneDrive или синхронизацию накопителя (если применимо)
Если вы используете OneDrive или версию Google Drive для настольных компьютеров в качестве основного облачного решения, имейте в виду, что эти два приложения могут стать огромными препятствиями для пропускной способности интернета, если вы активно синхронизируете файлы, пока вы пытаетесь запустить тест скорости.
Несколько пострадавших пользователей сообщали, что они постоянно получали эту ошибку, пока не осознали, что их облачное решение (Onedrive или Google drive) загружало файлы в фоновом режиме, эффективно занимая всю доступную полосу пропускания.
Если этот сценарий применим, вы можете решить эту проблему, приостановив последовательность синхронизации Ondrive или Google Drive — в зависимости от инструмента, который вы используете.
Поскольку мы не делаем различий, мы создали два отдельных руководства, которые помогут вам отключить активную синхронизацию независимо от того, какое облачное приложение вы используете.
Приостановка активной синхронизации на OneDrive
- Щелкните правой кнопкой мыши значок панели задач, связанный с OneDrive (значок, напоминающий облако).
- Затем в контекстном меню OneDrive нажмите «Еще», выберите «Приостановить синхронизацию» и выберите 2 часа в списке доступных параметров.Приостановка синхронизации на OneDrive
Примечание: двух часов более чем достаточно для завершения теста скорости — не нужно останавливать активную функцию синхронизации на неопределенный срок.
Приостановка активной синхронизации на Google Диске
- Перейдите на панель задач и найдите значок, связанный с Google Drive.
- Если вы видите, что утилита активно синхронизирует файлы, нажмите кнопку действия (в верхнем правом углу) и нажмите «Пауза» в появившемся меню «Текст».Приостановка Google Drive Sync
- Теперь, когда активная синхронизация отключена, повторите тест скорости и посмотрите, решена ли проблема.
- После завершения операции вернитесь в то же меню Google Drive и нажмите «Возобновить», чтобы восстановить синхронизацию в реальном времени.
Если вы уже сделали это безуспешно или этот сценарий неприменим, перейдите к следующему потенциальному исправлению ниже.
Домен прописан, ошибка осталась
Сейчас (осень 2021) у всех массово возникли проблемы. Это касается изменений на стороне центра сертификации let's encrypt (30 сентября 2021 года подошел к концу срок действия корневого сертификата IdenTrust DST Root CA X3.). И если у вас было все настроено и работало, ошибка все-равно появляется.
Решается все довольно просто. Подключаемся по SSH, выходим из открывшегося меню (ctrl+c) и вводим команды подряд:
yum install ca-certificates
update-ca-trust
Готово. Теперь все будет работать.
Думаю в следующих обновлениях Виртуальной машины это поправят, но пока это решение рабочее на 100%.
Что делать?
Первое что нужно сделать при запуске сайта на виртуальной машине Битрикс, это прописать домен в файле hosts. Заходим на сервер по sftp под root-пользователем, идем в корневую папку etc, открываем файл hosts.
В первой строке через пробел прописываем домен (если доменов несколько, прописываем все через пробелы в этой строке).
Получится примерно так:
127.0.0.1 localhost.localdomain localhost rushstudio.by
Сохраняем файл и перезагружаемся. Готово, все работает.
Что делать?
Первое что нужно сделать при запуске сайта на виртуальной машине Битрикс, это прописать домен в файле hosts. Заходим на сервер по sftp под root-пользователем, идем в корневую папку etc, открываем файл hosts.
В первой строке через пробел прописываем домен (если доменов несколько, прописываем все через пробелы в этой строке).
Получится примерно так:
127.0.0.1 localhost.localdomain localhost rushstudio.by
Сохраняем файл и перезагружаемся. Готово, все работает.
Ошибка подключения сокета: соединение отклонено АНТМИНЕР ОШИБКИ! 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 (gethostname(chInfo,sizeof(chInfo)))
printf("Локальный хост отсутствует. \n");
return;
>
else
<
printf("Имя локального хоста: ");
printf(chInfo);printf("\n");
>
>
void CreateSocket()
servsocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (servsocket==INVALID_SOCKET)
printf("Ошибка создания сокета :-(\n");
exit(1);
>
else
printf("Сокет успешно создан и ожидает связи :-)\n");
>
>
void LinkSoketPort()
struct sockaddr_in <
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];>;
struct in_addr <
union <
struct unsigned char
s_b1,
s_b2,
s_b3,
s_b4;
> S_un_b;
struct unsigned short
s_w1,
s_w2;
> S_un_w;
unsigned long S_addr;
> S_un;
>;
SOCKADDR_IN socketaddr;
socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr = INADDR_ANY;
socketaddr.sin_port = htons(PORT_ADDR);
if (bind(servsocket,(LPSOCKADDR)&socketaddr,sizeof(socketaddr)) == SOCKET_ERROR)
printf("Нет связи с портом. ");
exit(1);
>
else printf("Успешное установление связи с портом\n");
>
void CloseScoket()
closesocket(servsocket);
>
HWND GetConsoleHWND()
SetConsoleTitle(NAME_SERVER_SOCKET);
hwndc=FindWindow(NULL, NAME_SERVER_SOCKET);
if (hwndc==NULL)
printf("Ошибка получения хендла окна. ");
exit(0);
>
return hwndc;
>
void LinkWindowScoket()
int Errors;
Errors=WSAAsyncSelect(servsocket,GetConsoleHWND(),
WM_SERVER_ACCEPT, FD_ACCEPT||FD_READ||FD_WRITE||FD_CONNECT);
if (Errors == SOCKET_ERROR)
printf("Ошибка соединения сокета с окном . \n");
exit(1);
>
else printf("Успешное соединение сокета с окном! \n");
>
void WaitSocket()
int Errors;
Errors=listen(servsocket,QUEUE_SIZE);
if ( Errors == SOCKET_ERROR)
printf(" Ошибка. НЕТ ОЖИДАНИЯ СОЕДИНЕНИЯ . \n");
exit(1);
>
else printf("УСПЕХ . \n");
printf("Ожидаем соединение \n");
>
Читайте также: