@RusTorg

Как исправить проблему с подключениями через сокеты?

$socket = socket_create(AF_INET, SOCK_DGRAM, 0);
            socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>2, "usec"=>0));
            $result = socket_connect($socket, $this->ip, $this->port);
    
            if($result <= 0) {
                echo "connect() failed.\nReason: ($result) \n";
            }
                $data = "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00";
                socket_write($socket, $data, strlen($data));
    
                    $out = socket_read($socket, 4096);
                    socket_close($socket);
                    if($out == null ){
    	                echo 'data null';
                    }
                    else {
                        $queryData = explode("\x00", substr($out, 6), 5);
                        $server['ip'] = $this->ip;
                        $server['port'] = $this->port;
                        $server['name'] = $queryData[0];
                        $server['map'] = $queryData[1];
                        $server['game'] = $queryData[2];
                        $server['description'] = $queryData[3];
                        $packet = $queryData[4];
                        //$app_id = array_pop(unpack("S", substr($packet, 0, 2)));
                        $server['players'] = ord(substr($packet, 2, 1));
                        $server['playersmax'] = ord(substr($packet, 3, 1));
                        $server['bots'] = ord(substr($packet, 4, 1));
                        $server['dedicated'] = substr($packet, 5, 1);
                        $server['os'] = substr($packet, 6, 1);
                        $server['password'] = ord(substr($packet, 7, 1));
                        $server['vac'] = ord(substr($packet, 8, 1));
                        $this->info = $server;
                               echo "<pre>";
                                print_r($queryData);
                                echo "</pre>";
                    }


Этот кусок кода идеально работал на моем старом сервере (centos + php5 + apache2);
Но после переноса на новый (ubuntu + php5 + apache2), он стал вести себя очень странно.

Через сокеты вроде как идет коннект до сервера (ни варнингов, ни эрроров), но в ответ на запрос ничего не получает.

Есть такое ощущение что он просто не может присоединиться к внешним серверам. Но я не знаю как это исправить.

Поддержка сокетов в php включена.

Заранее спасибо за ответы!
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы