Я следовал учебному руководству по HTML5 Websocket на веб-сайте ниже:
2. почему работает socket_bind ($ socket, "127.0.0.1", 8080), но socket_bind ($ socket, "218.175.192.160", 8080) происходит ошибка? система напоминает «невозможно связать адрес [0]: запрошенный адрес недопустим в своем контексте». Я уверен, что IP-адрес принадлежит моему серверу.
Пожалуйста, помогите, спасибо.
Я выяснил причину ошибки: связывание неправильного адреса, потому что я использовал маршрутизатор, даже если я установил NAT служба на маршрутизаторе, но я забыл, что адрес «218.175.192.160» относится к интерфейсу маршрутизатора, а не к моей серверной машине.
адрес серверной машины должен соответствовать типу локального адреса, например: «192.168.1.2 ", который действительно находится на интерфейсе локальной сети.
извините, что забыл основные настройки сети :(, надеюсь, этот пост поможет новичку в сети, как я, спасибо ~: )
У меня тоже была такая проблема.
Проблема в том, что вы, скорее всего, имеете в виду IP-адрес вашего МАРШРУТИЗАТОРА. Что вам нужно сделать, это обратиться к IP-адресу вашего КОМПЬЮТЕРА.
Это работает для локального хоста, потому что локальный хост указывает на ваш индивидуальный компьютер, а не на ваш маршрутизатор.
Я считаю, что одна и та же политика происхождения применяется как к веб-сокетам, так и к портам сервера, поэтому и клиент, и сервер должны совпадать, иначе соединение не будет установлено.
В вашем примере вы использовали:
http://218.175.192.160:8080/client.html
ws://218.175.192.160/daemon.php
Я не уверен, что это была просто опечатка, но это должна быть
http://218.175.192.160:8080/client.html
ws://218.175.192.160:8080/daemon.php
Вы все еще используете 'localhost' для инициализации вашего PHP-сервера таким образом?:
public function __construct($host='localhost',$port=8000,$max=100)
Если вы сделаете это, то сервер будет связываться только с интерфейсом localhost. Даже если вы правильно обслуживаете файл из Apache, похоже, что код phpwebsockets все еще необходимо настроить для внешнего IP-адреса.