
27.03.2009, 20:51
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
PHP код:
<?php
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
@ini_set("display_errors","1");
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$JABBER_SERVER = "jabber.ru";
$PORT = 5222;
$i=0;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if(!$socket) { echo 'soket open - NO'; exit; } else { echo 'socket open - OK<br>'; }
$connect = socket_connect($socket, $JABBER_SERVER, $PORT);
if(!$connect) { echo 'soket connect - NO'; exit; } else { echo 'socket connect - OK<br>'; }
$t = "<stream:stream to='jabber.ru' xmlns='jabber:client' ";
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/> ";
echo '<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>';
socket_write($socket, $t);
while (1) {
$read=array($socket);
$count=socket_select($read,$write=null,$exception= null,1);
// Если ничего не пришло пропускаем
// Или если нужно что то послать по собственному желанию - отправляем
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов
if ($count<1) continue;
foreach ($read as $one) {
$input=socket_read($one,4096);
if (!empty($input)) {
// Тут обработка принятого пакета
// например если пришел пакет stream features ответить пакетом начала SASL авторизации
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";
}
}
}
$t2 = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />";
echo '<b>Клиент - </b>'.htmlspecialchars($t2).'<br><br>';
socket_write($socket, $t2);
while (1) { $read=array($socket); $count=socket_select($read,$write=null,$exception= null,1);
// Если ничего не пришло пропускаем
// Или если нужно что то послать по собственному желанию - отправляем
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов
if ($count<1) continue; foreach ($read as $one) { $input=socket_read($one,4096);
if (!empty($input)) {
// Тут обработка принятого пакета
// например если пришел пакет stream features ответить пакетом начала SASL авторизации
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";
}
}
}
?>
if (!empty($input)) {
тогда выводим ответ
}
Последний раз редактировалось Pashkela; 27.03.2009 в 20:55..
|
|
|