Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2010, 18:55
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 1  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
По умолчанию Перестал работать сокет

Добрый день!
Сделал чат на сокетах, сервер на пхп, с пхп пару месяцев, сокет соединение буквально неделю назад увидел и решил попробовать.

Через пару дней зашел а клиент не коннектится к серверу. На локальном сервере работает. Хостер на днях переставлял систему, и после этого перестало работать, а может и просто совпало. Никаких изменений ни со стороны клиента и сервера не было, просто ошибка 2031 у флеша.
Задал вопросу хостеру и сказал что после их переустановки у меня перестал работать сокет, в ответ получил:
Цитата:
мы не предоставляем услуг по сокетам, демонам и т.д. на шаред хостинге. Если он у вас перестал работать, значить просто прикрыли эту возможность. Для этих целей существуют vps и выделенные сервера
Объясните пожалуйста что хостер сказал? И каковы могут быть причины того что раньше работало а терь перестало. Буду благодарен за любую информация.
з.ы. кроссдоменник стоит.
Код AS3:
var hostName:String = "server";
var port:uint = 9988;
var socket:XMLSocket;
function XMLSocketExample() {
	socket = new XMLSocket();
	configureListeners(socket);
	socket.connect(hostName, port);
}
XMLSocketExample();
function send(data:Object):void {
	socket.send(data);
}
 
function configureListeners(dispatcher:IEventDispatcher):void {
	dispatcher.addEventListener(Event.CLOSE, closeHandler);
	dispatcher.addEventListener(Event.CONNECT, connectHandler);
	dispatcher.addEventListener(DataEvent.DATA, dataHandler);
	dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
	dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
}
function closeHandler(event:Event):void {
	trace("closeHandler: " + event);
}
function connectHandler(event:Event):void {
	trace("connectHandler: " + event);
}
function dataHandler(event:DataEvent):void {
	trace("dataHandler: " + event);
}
function ioErrorHandler(event:IOErrorEvent):void {
	trace("ioErrorHandler: " + event);
}
function progressHandler(event:ProgressEvent):void {
	trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
function securityErrorHandler(event:SecurityErrorEvent):void {
	trace("securityErrorHandler: " + event);
}
PHP код:
#!/usr/bin/php -q
<?php
error_reporting
(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = 'server';
$port = 9988;
 
//---- Function to Send out Messages to Everyone Connected ----------------------------------------
 
function send_Message($allclient, $socket, $buf) {
    foreach(
$allclient as $client) {
        
socket_write($client, $buf);
    }
}
 
 
 
//---- Start Socket creation for PHP 5 Socket Server -------------------------------------
 
if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
    echo 
"socket_create() failed, reason: " . socket_strerror($master) . "\n";
}
 
socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);
 
 
if ((
$ret = socket_bind($master, $address, $port)) < 0) {
    echo 
"socket_bind() failed, reason: " . socket_strerror($ret) . "\n";
}
 
 
if ((
$ret = socket_listen($master, 5)) < 0) {
    echo 
"socket_listen() failed, reason: " . socket_strerror($ret) . "\n";
}
 
 
 
$read_sockets = array($master);
 
//---- Create Persistent Loop to continuously handle incoming socket messages ---------------------
while (true) {
    
$changed_sockets = $read_sockets;
    
$num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);
    foreach(
$changed_sockets as $socket) {
        if (
$socket == $master) {
            if ((
$client = socket_accept($master)) < 0) {
                echo 
"socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
                continue;
            } else {
                
array_push($read_sockets, $client);
            }
        } else {
            
$bytes = socket_recv($socket, $buffer, 2048, 0);
            if (
$bytes == 0) {
                
$index = array_search($socket, $read_sockets);
                unset(
$read_sockets[$index]);
                
socket_close($socket);
            }else{
                
$allclients = $read_sockets;
                
array_shift($allclients);
                
send_Message($allclients, $socket, $buffer);
            }
        }
    }
}
 
?>

Старый 30.08.2010, 19:22
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
А что php скрипт выдает? Думается мне, что Socket creation не состоялся.
Пересобрали php без какого-нить --enable-sockets и амба. А мож кто ещё умный на 9988-й порт сел уже.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 30.08.2010, 19:46
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 3  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
а пхп вообще ничего не выдает, просто идет какая бесконечная загрузка страницы...
порты менял на разные.
пхп инфо выдает что сокет включен..
---
upd
Я в шоке с этих хостеров, как выяснилось хостер вырубил сокет оО


Последний раз редактировалось Ralph_DiMarko; 31.08.2010 в 10:49.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.