Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Нужно установить keep-alive соединение (https://forum.antichat.xyz/showthread.php?t=186705)

Mixon 14.03.2010 09:08

Нужно установить keep-alive соединение
 
Дело обстоит так,есть одна не плохая он-лайн игрушка,а именно http://vkontakte.ru/app1641757
Так вот,при входе она соединяется с сервером 188.93.18.202:4321 (сервер:порт)
Мне нужно установить такое соединение с данным сервером средствами php,с возможностью отправки запросов на данный сервер.
Пробовал уже через сокс,сокс5,ничего,от сервера просто нет ответа...

Gifts 14.03.2010 13:15

Mixon fsockopen/socket_create и прочитайте целиком RFC2068, ну или хотя бы раздел keep-alive header

Mixon 14.03.2010 14:50

Gifts, если вы прочтёте внимательнее что я выше написал,то вы увидите,что я уже пробовал и fsockopen и socket_create,результата не дало!
По этому и обратился за помощью суда.

Gifts 14.03.2010 15:14

Mixon Вы написали XYZню. Много разных слов, которые не образуют общей картины. Весь текст, это ваша просьба написать панацею к вашей проблеме и в конце маленькая приписка: "Пробовал уже через сокс,сокс5" - во первых, это понимается как прокси сервера, какое отношение к keep-alive? Правильно, никакого. Во-вторых, скорее всего (об этом чуть далее), даже если вы ставите Connection: keep-alive, вы не ставите заголовок с таймаутом и вас отфутболивает автоматом, или заголовков не шлете нужных. В-третьих, я говорю "скорее всего", потому что ни примера кода, ни конструктивного текста с "попытками" в вашем посте нет, только полное непонимание

Mixon 14.03.2010 16:30

Gifts такс,тут если бы сервер отфутболивал (давал ошибку или просто обрывал соединение) то было бы по понятнее,но он просто никакого ответа не дает,абсолютно...Аналог того,когда тебя банят по IP,просто висиш,и страница не грузиться.
Вот пару примеров что я пробовал...

Код:

$fp = fsockopen ("tcp://188.93.18.202", 4321, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
//    fputs ($fp, "GET / HTTP/1.0\r\nHost: 188.93.18.202\r\n\r\n");
    while (!feof($fp)) {
        echo fgets ($fp,128);
    }
    fclose ($fp);
}

тут место tcp прописывал все поддерживавшийся протоколы...

Код:

$fp = fsockopen("188.93.18.202", 4321, $errno, $errstr, 30);

$out="GET /index.php HTTP/1.1\r\n";

fwrite ($fp, $out);

echo fgets($fp,5000);

fclose($fp);

Код:

<?php
$sh = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sh, '188.93.18.202', '4321');
$headers  = "GET / HTTP/1.0\r\n";
$headers .= "Host: 188.93.18.202\r\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 MRA 5.3 (build 02557) Firefox/3.0.6\r\n";
$headers .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$headers .= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
$headers .= "\r\n";
socket_write($sh, $headers, strlen($headers));
$result = '';
while ($r = socket_read($sh, 1024)) $result .= $r;
echo $result;
?>


Gifts 14.03.2010 19:00

Mixon На этом порту не HTTP протокол, вы бы хоть Wireshark'ом пользовались.

Протокол XML, каждый пакет завершается нулл-байтом.

PHP код:

$f fsockopen('tcp://188.93.18.202',4321) or die('cant connect');
fwrite($f"<policy-file-request/>\x00");
$str fread($f,4096);

while (
substr($str, -1)!=="\x00"$str.=fread($f,4096);

echo 
$str


Mixon 14.03.2010 22:33

Gifts,спс огромное!
Вирешарком я сниффил,но я мало знаюсь в сетевых передачах,по этому я мало что там понял,и как это реализовать...=((


Время: 21:26