Здравствуйте, помогите мне разобраться с сокетами на php и подключениям к ним со стороны клиента, очень много перерыл информаци, но все равно не доходит как это все работает, выделил основные вопросы:
1) В проекте на php у нас есть файл , в котором мы создаём сокет, например tcp://ip:port, там же у нас ожидается подключение к этому сокету, проект загружаем на хостинг, правильно ли я понимаю, что пользователь заходит на сайт, с его браузера отправляются http запросы на ip:80, отображаются страницы и на любой странице мы можем отправить http-запрос на файл, содержащий открытие сокета, после этого он подключается к нему и с любой страницы сайта он сможет уже отправлять данные через этот сокет, при этом другой пользователь заходит на сайта и может подключиться к уже открытому сокету? То есть они оба подключены к сокету и в реальном времени могут через него данными обмениваться?
Если у нас есть такой файл в проекте , который открывает новый сокет, нужно чтобы сначала кто-то из пользователей http-запросом этот файл стригерил? И после этого к нему смогут другие подключаться или мы загружаем проект , сами исполняем этот файл и сокет уже постоянно открыт, а пользователи при заходе уже подключаются к нему?
2) Ещё вот такое вопрос, когда мы на хостинге покупаем место под сайт, то есть где-то там есть сервер на котором лежит папка с нашим проектом , выходит это как наш компьютер, мы можем несколько портов открывать на нем под свои нужды, то есть по умолчанию 80 это для http запросов, а я ещё 3 порта с помощью создания сокета на php под другие подключения могу резервировать и вообще сколько угодно?
Дополнительно:
Содержание
Ответы:
7 лет назад собирал себе на PHP упрощенный dns сервер
https://github.com/Muraveiko/DNS
Ожидает входящего соединения, на любой запрос ресолвит хост в ип адрес заглушки.
Запуск был оформлен как демон (служба) .
Увы, сами баш скрипты и прочее за давностью лет не сохранились.
Суть в том, что все это само стартовало при загрузке/перезагрузке сервера и можно было сделать с консоли
аналогично всем остальным службам start/stop
Во первых веб браузеры не умеют работать с обычным универсальным tcp/udp советами, им нужен определенный протокол, т.е. приложение, которое слушает сокет (socket_listen) должно работать по совместимому протоколу (сейчас это http, его расширение websocket, а для udp - webrtc).
Когда браузер подключается к сокету, слушала приложение получает событие и сокет клиента - соединение от браузера и дальше уже работает с ним (обычно такие приложения делают асинхронными, чтобы можно было одновременно обрабатывать несколько подключений, иначе клиента будет ждать, когда он освободится, или вылетают по таймауту)
Про 'ваш сервер', я встречал виртуальный хостинг, обычно точно дешёвые так делают, когда сервер сидит в локальной сети, а порты по тарифу подбрасываются nat, т.е. Только разрешенные порты так работают
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Открытие сокета на сервере является ключевым механизмом для установления соединения между клиентом и сервером по протоколу TCP/IP. Сокет представляет собой программный интерфейс, который позволяет приложениям обмениваться данными через сеть.
Для открытия сокета на сервере в языке программирования PHP, мы можем использовать функции socket_create(), socket_bind() и socket_listen(). Давайте рассмотрим пример:
В данном примере мы создаем сокет с использованием протокола TCP/IP, привязываем его к IP-адресу и порту, начинаем прослушивать входящие соединения, принимаем соединение от клиента, читаем данные от клиента, отправляем ответное сообщение и закрываем соединение.
Важно помнить, что открытие сокета на сервере требует правильной обработки ошибок, а также безопасности, чтобы предотвратить возможные атаки. Также следует учитывать, что использование сокетов может быть ресурсоемким процессом, поэтому необходимо оптимизировать работу с ними для повышения производительности сервера.