За последние 24 часа нас посетил 29901 программист и 1761 робот. Сейчас ищут 889 программистов ...

Игровой сервер проблема с сокетами

Тема в разделе "PHP для новичков", создана пользователем alex4715, 24 авг 2010.

  1. alex4715

    alex4715 Активный пользователь

    С нами с:
    9 май 2009
    Сообщения:
    35
    Симпатии:
    0
    День добрый.

    Скачал скрипт эмулятор игрового сервера для АЕОН

    Вроде всё работает, но выдаёт такие ошибки:
    Код (Text):
    1.  
    2. Warning: fputs(): supplied argument is not a valid stream resource in server.php
    3. Warning: fclose(): supplied argument is not a valid stream resource in server.php
    Вот эти строки:

    PHP:
    1.  
    2. $f=fsockopen("$fip", $fport);
    3. fputs($f, "$key");
    4. fclose($f);
    5.  
    Я честно говоря особо не понимаю зачем сокеты используются может быть кто нибудь пояснит как и справить эти ошибки?
     
  2. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Вероятно скрипт общается с движком-демоном посредством сокетов.
    В твоем случае, вероятно он сообщает, что не смог приконнектиться к указанной паре IP/Port (переменные $fip, $port).

    вот пример из мануала (http://php.net/manual/en/function.fsockopen.html):
    PHP:
    1. <?php
    2. $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
    3. if (!$fp) {
    4.     echo "$errstr ($errno)<br />\n";
    5. } else {
    6.     $out = "GET / HTTP/1.1\r\n";
    7.     $out .= "Host: [url=http://www.example.com]www.example.com[/url]\r\n";
    8.     $out .= "Connection: Close\r\n\r\n";
    9.     fwrite($fp, $out);
    10.     while (!feof($fp)) {
    11.         echo fgets($fp, 128);
    12.     }
    13.     fclose($fp);
    14. }
    15. ?>
    16.  
    Сделай также и посмотри, что возвращается в $errno
     
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    engager
    в $errno не факт что туда чтото попадет. Сокет может вообще не вернуть ошибки, об этом в оф. мануале читал.
    Сокеты это такая хня, которую контролить весь трудно. лучше глушить такие ошибки через @, а проверять на то удачно ли - путем проверки на длину самого ответа от серва, то есть если он больше стольки то символов - знач норм, иначе беда случилась.
     
  4. alex4715

    alex4715 Активный пользователь

    С нами с:
    9 май 2009
    Сообщения:
    35
    Симпатии:
    0
    Всем спасибо я решил проблему, там просто надо было создать бат файл.