Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Jabber бот на php - проблема с сокетами |

27.03.2009, 14:21
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме: 1996429
Репутация:
468
|
|
Jabber бот на php - проблема с сокетами
Всем привет!
Решил написать своего джаббер бота на пхп. Не нада кричать что есть готовые бибоиотеки с xmpp итд, я пишу с нуля. Проблема заключается втом, что функция socket_read читает только один пакет, их бывает приходит 2 или 3, приходится ее писать несколько раз, из-за этого (я так думаю, но не факт что это из-за функции) у меня сбивается порядок огбмена пакеами и соединение рвется что-ли... посылаю данные а ответа не вижу (еслиб я допустил ошибку в формировании данных, пришел бы пакет, говорящий об ошибке в синтаксисе) .. Помогите плз.
PHP код:
<?php
$JABBER_SERVER = "jabber.ru";
$PORT = 5222;
$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);
$data = socket_read($socket, 5000);
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($data)."<br><br>";
$data = socket_read($socket, 5000);
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($data)."<br><br>";
$data = socket_read($socket, 5000); echo '<b>Ответ от jabber - </b>'.htmlspecialchars($data)."<br><br>";
$t1 = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />";
echo '<b>Клиент - </b>'.htmlspecialchars($t1).'<br><br>';
socket_write($socket, $t1); $data = socket_read($socket, 5000);
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($data)."<br><br>";
//socket_close($socket);
?>
Последний раз редактировалось Krist_ALL; 27.03.2009 в 17:00..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|