![]() |
Socket Server для Flash-игры на PHP
Вложений: 1
Собственно суть проблемы.
Есть Windwos 7, в VirtualBox'e крутится сервер Ubuntu с Apache, есть роутер для выхода в интернет с выделенным IP. Все настроено таким образом, что сайт в Apache виден из-вне по адресу 91.200.106.130 . Также настроен Forwarding в роутере с портов 80,843,10014 на Ubuntu, у которого есть свой внутри-сетевой IP (192.168.1.105). Есть 2 скрипта на php для запуска сокет сервера на 843 порт для передачи crossdomain.xml , и на 10014 порт. В Ubuntu через командную строку запускаю эти 2 скрипта: Код:
php .../socketServer.php &После чего проверяю: Код:
ps -aux | grep phpТак вот проблема: ни флэш ни Windows telnet не подключаются к портам 843 и 10014, ни по адресу внешнему (91.200.106.130), ни по внутри-сетевому (192.168.1.105). Код:
Microsoft Telnet> o 91.200.106.130 10014Код:
Нажмите любую клавишу...Код:
Подключение к 91.200.106.130...И вот еще скрипты которые я собственно и запускаю (вложения) |
Зачем апач для сокетов? Какая-то очень сложная схема подключения... а зачем так сложно? Почему линукс из-под виндивса, а не наоборот (такой вариант изначально ущербный)? Я так понимаю это для тестов делается? - зачем вообще тогда в виртуализации запускать сервер, он точно так же и в виндовсе работать будет.
|
Да, для тестов. Обычный Apache для Windows решил не использовать потому как он периодически вылетает у меня на 7-ке, чего на XP раньше не было. Знакомый мне посоветовал Ubuntu, так как в конечном варианте спонсорский сервер будет тоже на ней запускаться.
В теории вроде бы все сделано верно, но почему такой способ может не работать |
Я вообще не понимаю зачем Windows. Вы с домашнего компа сервера делаете? Это какой-то Evil Edition.
|
А вот я не согласен с предыдущими ораторами.
Например я плачу хостеру strato.de за 4-х процессорный сервер с CentOS Linux 5.5. И в тоже время у меня дома под Windows XP и на другом под Windows 7 стоит VMWare Workstation и на нем виртуальная машина точно с таким же CentOS Linux, и все так же скофигурированно. И это очень удобно, удобнее чем если бы у меня был Apache для Windows, PostgreSQL для Windows, Cygwin и т.д. (так я начинал). Если в каких-нибудь изменениях я не уверен, то делаю snapshot в VMWare или даже копирую всю VM на DVD-диски... Жаль что у Вас не VMWare, а то я может быть помог. Посмотрите "netstat -an", слушают ли программки (LISTENING) на нужных портах. Проверьте firewalls (и на Windows и на Linux: iptables -L) Поставьте сниффер для Windows - Wireshark и посмотрите на пакеты. пока |
Вложений: 1
Спасибо за помощь, но это не все :(
Комманда "netstat -an" не вывела портов 843 или 10014. Прослушивается 80 и еще куча других. Windows firewall выключен полностью, в Ubuntu сделал "iptables -F" (вроде как временное отключение firewall) и перезапустил скрипты... netstat не показал ничего нового, Telnet не достучался. Wireshark при попытке подключиться к серверу Telnet'ом выдал Вложение 25303 Вроде какой-то ответ есть с портов получается. То же самое пишет, если подключаться Telnet'ом когда на Ubuntu не запущены скрипты. При запуске скриптов ничего особого не возникает в Wireshark. В прикрепленном архиве пара php файлов запускающих сокет сервер, может быть в них проблема? socket_bind() делается на 127.0.0.1 это правильно? |
Если "netstat -an" не показывает LISTENING на порту 10014, то файервол и Wireshark пока смотреть не зачем ;-)
socket_bind на 127.0.0.1 скорее всего тоже неправильно, там наверное нужно 0.0.0.0 или хотя бы IP адрес Вашей VM. И что стоит в /var/log/messages или куда у Вас php пишет (см. php.ini)? пока Добавлено через 15 минут Кстати если любите telnet, то им и под Ubuntu пользоваться можно ;-) |
Вложений: 1
Да не люблю я его) я его пока только 1 день знаю))
При IP 91.200.106.130 (внешний выделенный IP) - "Warning: Unable to bind address" во время выполнения скриптов. При "0.0.0.0" или "192.168.1.105" (внутренний IP виртуальной машнины) или "NULL" или "null" результат тот же что и раньше. "netstat -an" не видит портов, telnet ведет себя по прежнему. Сделал "find / -name php.ini" и нашел 2 файла: /etc/php5/cli/php.ini /etc/php5/apache2/php.ini Фразу "/var/log/messages" в них не нашел и запихнул обоих в .zip :rolleyes: |
Я скопировал на свою CentOS VM, поменял $ip = '0.0.0.0'; Запустил
Код:
php socketServer.phpnetstat -an его тоже видел: Код:
netstat -an| grep 100 |
afarber
У меня на рабочей машине стоит на 1 винте Windows на другом Linux Gentoo... две полноценные ОС. И это очень удобно. |
На самом деле неудобно. Нужно все время перезагружаться.
Удобнее Linux или BSD в виде VM, а самому пользоваться Flash/Flex/Photoshop/Illustrator на Windows или Mac. |
Все работает! Сокет сервер удалось запустить не через командную строку, но через браузер запустилось и работает, а это круто! Огромная благодарность тебе, afarber :drinks:
Сделал так само с IP адресом 0.0.0.0 , после чего получилось из флэшки подключиться в том числе, а этого уже думаю хороший знак! :yahoo: 2membrilius, если ты не пользуешься Photoshop, Dreamweaver, Flash etc. то тогда да. В моем же случае нужно и то и другое почти одновременно, а время на перезагрузки тратить это лишнее. |
| Часовой пояс GMT +4, время: 20:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.