Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP]Bindowanie się na swój adres IP
#1
Jak tu mi nikt nie pomoże, to już nie wiem kto może.

Mam na nazwie prosty skrypt pobierający dane o serwerze CS. Pewnego razu przestał działać, więc napisałem do supportu.

To ten skrypt:

Kod:
$ip = "194.109.69.51";

$fp = @fsockopen("udp://".$ip, 27015);
stream_set_timeout($fp, 10);
//stream_set_blocking($fp, 0);
fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$return = fread($fp, 100);
echo $return;
$data = stream_get_meta_data($fp);

print_r($data);

if($data['timed_out'])
{
    die("Timed Out");
}
else
{
    print_r($data);
}

I odpowiedź z nazwy:

Cytat:zanim wykonuje Pan w skryptach operacje zapisu/odczytu z gniazda sieciowego
proszę zbindować się na swój adres IP.

Co to znaczy? W manualu PHP znalazłem tylko bindowanie dotyczące serwera z którym się łączy przez alias.

Co mam zrobić?

Próbowałem tak jak coś w manualu było:

Kod:
$ip = "193.33.176.148";

$opts = array('socket' => array('bindto' => '85.128.153.53:0'));

$context = stream_context_create($opts);

$fp = @stream_socket_client("udp://".$ip.":27015", $errno, $errstr, 5, STREAM_CLIENT_CONNECT, $context);
stream_set_timeout($fp, 10);
//stream_set_blocking($fp, 0);
fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$return = fread($fp, 100);
echo $return;
$data = stream_get_meta_data($fp);

print_r($data);

if($data['timed_out'])
{
    die("Timed Out");
}
else
{
    print_r($data);
}

array('bindto' => 'IP:0')) - w to miejsce wstawiałem swoje IP, ip serwera, ip routera, ale nic nie działa. Dalej timeout

Jak to coś pomoże...

Wynik:
Kod:
Array ( [stream_type] => udp_socket [mode] => r+ [unread_bytes] => 0 [seekable] => [timed_out] => 1 [blocked] => 1 [eof] => ) Timed Out[code]

Chciałem tylko pozwolić na pobieranie danych o serwerze CS (protokół UDP, port prawie zawsze 27015) wszystkim ludziom wchodzącym na moją stronkę. Nie znam ani IP wchodzących (znaczy, nie licząc $_SERVER['SERVER_ADDR']), ani ip serwerów do których chce się połączyć.

Musiałbym zmieniać coś po stronie serwera? Tzn. otwierać porty? Bo już nie rozumiem z której strony mam bindować i co mam bindować.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak sprawdzić czy adres www znajduje sie w bazie mysql? jarekcda 8 9,025 13-05-2017, 01:02
Ostatni post: miketodson255

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl