Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Serwer UDP i pobieranie danych
Forum PHP.pl > Forum > Przedszkole
Misiur66
Cześć.

Wracam ze starym problemem. Kiedyś pobierałem dane o serwerze CS na serwerze który stoi na nazwie i wszystko działało. Robiłem to za pomocą gotowej biblioteki. Nagle przestało działać. Wszystko wskazywało na to że instalacja MyBB coś zmieniła. Nie miałem czasu tego poprawić. Teraz znowu mam za zadanie to naprawić, więc korzystając z manuala, tutoriali i ze swojej wiedzy, próbuję krok po kroku zadziałać.

Kod
<?php

$ip = "194.109.69.51";

$fp = @fsockopen("udp://".$ip, 27015);

//stream_set_blocking($fp, 0);
$data = stream_get_meta_data($fp);

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

?>


Zwraca:

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


To dobrze, znaczy że się połączyło.

No to dalej, kopiuję informację którą trzeba wysłać na serwer i ją wysyłam. Teraz kod wygląda tak:

Kod
<?php

$ip = "194.109.69.51";

$fp = @fsockopen("udp://".$ip, 27015);

//stream_set_blocking($fp, 0);
fwrite( $fp, sprintf( '%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, "infostring", 0x00 ) );
$return = fread($fp, 100);
echo $return;
$data = stream_get_meta_data($fp);

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

?>


Zwraca:

Kod
Timed Out


Nie wiem co jest grane. Bawiłem się w skanowanie portów mojego serwera, ale nic z tego nie wywnioskowałem.

Czy ktoś miał podobny problem lub wie co jest grane?
erix
A nie pomyślałeś o tym, że administrator mógł uaktywnić firewalla?

Skoro nagle przestało, to jest to najbardziej prawdopodobna przyczyna; zapytaj na supporcie. smile.gif
Misiur66
To maile pomiędzy mną a admin@nazwa.pl. Tam mnie skierowali z supportu (Dodam że ta rozmowa odbyła się dużo wcześniej niż ten temat i jeszcze wtedy używałem gotowego skryptu. Ale jak widać poniżej, objawy takie same.)

Cytat
Z naszej strony nic nie było blokowane ani zmieniane.
Przeanalizowaliśmy działanie skryptu i przy połączeniu do zdalnego adresu następuje timeout.
Proszę sprawdzić ustawienia firewalla po państwa stronie

Wycinek z wykonanego strace.

Kod
munmap(0x36c64000, 4096)                = 0
uname({sys="Linux", node="server", ...}) = 0
gettimeofday({1267777204, 314675}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(3, {sin_family=AF_INET, sin_port=htons(27015), sin_addr=inet_addr("194.109.69.51")}}, 16) = 0
fcntl64(3, F_SETFL, O_RDWR)             = 0
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
send(3, "\377\377\377\377V\0\0\0\0", 9, 0) = 9
gettimeofday({1267777204, 315448}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
fcntl64(4, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(4, {sin_family=AF_INET, sin_port=htons(27015), sin_addr=inet_addr("194.109.69.51")}}, 16) = 0
fcntl64(4, F_SETFL, O_RDWR)             = 0
fcntl64(4, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
send(4, "\377\377\377\377V\0\0\0\0", 9, 0) = 9
gettimeofday({1267777204, 315981}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(5, {sin_family=AF_INET, sin_port=htons(27015), sin_addr=inet_addr("194.109.69.51")}}, 16) = 0
fcntl64(5, F_SETFL, O_RDWR)             = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
send(5, "\377\377\377\377V\0\0\0\0", 9, 0) = 9
gettimeofday({1267777204, 316422}, NULL) = 0
gettimeofday({1267777204, 316490}, NULL) = 0
select(6, [3 4 5], [], [], {0, 999999}) = 0 (Timeout)
send(3, "\377\377\377\377TSource Engine Query\0", 25, 0) = 25
send(4, "\377\377\377\377U%s", 7, 0)    = 7
send(5, "\377\377\377\377V%s", 7, 0)    = 7
gettimeofday({1267777205, 315983}, NULL) = 0
gettimeofday({1267777205, 316076}, NULL) = 0
select(6, [3 4 5], [], [], {0, 999999}) = 0 (Timeout)
close(3)                                = 0
close(4)                                = 0
close(5)


Pozdrawiam,
Jacek Łukaszewicz


Moja odpowiedź:

Cytat
Dziękuję za informację.

Jak sprawdzić ustawienia firewall'a u nas? I jeszcze jedno - czy zainstalowanie skryptu forum (MyBB) mogło coś zmienić w ustawieniach?


I ostatnia wiadomość od nich

Cytat
Niestety nie jestem w stanie Panu pomóc w ustaleniu ustawien firewalla ponieważ nie jestem
administratorem zdalnego serwera. Co do wpływu instalacji skryptów forum na działanie Pańskiego monitora
to ciężko powiedzieć ponieważ nei znam ani jednej ani drugiej aplikacji. Choć szczerze mówiąc nie powinno mieć
to wpływu.

Pozdrawiam,
Michał Kowal



Szukałem jakichś rzeczy typu mod_secure.c czy coś, ale nigdzie nie widziałem.


Do kogo się zwrócić, do supportu, czy znowu do tego admin@nazwa.pl? Kto może coś sprawdzić/zmienić?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.