2012-03-12 2 views
0

им с помощью fsockopen ниже:fsockopen возвращает ошибку, даже если сервер, пытающийся связаться с ним, находится в сети?

$socket = fsockopen("uberminecraft.com", 25565, $errno, $errstr, 1); 

return ($errno === 0); 

Теперь это должно возвращать либо ложным или истинным, если сервер или нет. Я знаю, что этот сервер неисправен, но я все еще продолжаю получать ошибку.

Warning: fsockopen() [function.fsockopen]: unable to connect to uberminecraft.com:25565 (Connection timed out) 
+1

Я бы дважды проверил несколько вещей, прежде чем предположить, что PHP является виновником. Убедитесь, что ваш брандмауэр в порядке с PHP, делающим исходящие подключения на этом порту, и дважды проверьте, что принимающий сервер прослушивает этот порт. –

+1

Вы получили бы правду/ложь только в том случае, если TCP-пакеты действительно прошли через или открыли соединение или отказались от отказа. Выбранное время обычно указывает, что что-то блокирует пакеты и бросает их на пол, например. брандмауэр. –

ответ

1

Вы установили тайм-аут 1 секунды, является ли это намеренным? Вы знаете, может ли сервер обеспечить ответ достаточно быстро? Вы пытались установить более высокий тайм-аут?

Также вы можете посмотреть на php.net, как проверить, было ли установлено соединение.

0

Вы должны изменить fsockopen функции следовать

$ сокета = fsockopen ("uberminecraft.com", 25565, $ ERRNO, $ ErrStr, 30);

Все еще вы получаете такую ​​же ошибку. обратитесь к провайдеру хоста, чтобы открыть порт 25565.

Thanks