Просмотр полной версии : Нужно установить keep-alive соединение
Дело обстоит так,есть одна не плохая он-лайн игрушка,а именно http://vkontakte.ru/app1641757
Так вот,при входе она соединяется с сервером 188.93.18.202:4321 (сервер:порт)
Мне нужно установить такое соединение с данным сервером средствами php,с возможностью отправки запросов на данный сервер.
Пробовал уже через сокс,сокс5,ничего,от сервера просто нет ответа...
Mixon fsockopen/socket_create и прочитайте целиком RFC2068, ну или хотя бы раздел keep-alive header
Gifts, если вы прочтёте внимательнее что я выше написал,то вы увидите,что я уже пробовал и fsockopen и socket_create,результата не дало!
По этому и обратился за помощью суда.
Mixon Вы написали XYZню. Много разных слов, которые не образуют общей картины. Весь текст, это ваша просьба написать панацею к вашей проблеме и в конце маленькая приписка: "Пробовал уже через сокс,сокс5" - во первых, это понимается как прокси сервера, какое отношение к keep-alive? Правильно, никакого. Во-вторых, скорее всего (об этом чуть далее), даже если вы ставите Connection: keep-alive, вы не ставите заголовок с таймаутом и вас отфутболивает автоматом, или заголовков не шлете нужных. В-третьих, я говорю "скорее всего", потому что ни примера кода, ни конструктивного текста с "попытками" в вашем посте нет, только полное непонимание
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;
?>
Mixon На этом порту не HTTP протокол, вы бы хоть Wireshark'ом пользовались.
Протокол XML, каждый пакет завершается нулл-байтом.
$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;
Gifts,спс огромное!
Вирешарком я сниффил,но я мало знаюсь в сетевых передачах,по этому я мало что там понял,и как это реализовать...=((
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot