![]() |
Jabber бот на php - проблема с сокетами
Всем привет!
Решил написать своего джаббер бота на пхп. Не нада кричать что есть готовые бибоиотеки с xmpp итд, я пишу с нуля. Проблема заключается втом, что функция socket_read читает только один пакет, их бывает приходит 2 или 3, приходится ее писать несколько раз, из-за этого (я так думаю, но не факт что это из-за функции) у меня сбивается порядок огбмена пакеами и соединение рвется что-ли... посылаю данные а ответа не вижу (еслиб я допустил ошибку в формировании данных, пришел бы пакет, говорящий об ошибке в синтаксисе) .. Помогите плз. PHP код:
|
На многих форумах по пхп мне не помогли. Не знают как сделать...
Вя надежда на вас! |
попробуй так:
1. $t = блаблабалбала и в конце всегда ."\n"; 2. Явно указать длину того, чего пишешь: socket_write($socket, $t, strlen($t)); 3. Читать можно попробовать так: socket_read($socket, 5000, PHP_NORMAL_READ); А вообще читай: http://ru.php.net/socket_read там есть примеры работы с сокетами, правильные примеры |
Warning: socket_read() [function.socket-read]: unable to read from socket [104]: Connection reset by peer in ....
Сделал как сказал Pashkela но вот такая штука вылезла..... |
ты под каким Php этот код писал. У меня ошибку пишет, что функции socket_create не существует.
И я не пойму, что означают строки вида: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' /> |
Плд нормальным! ВОт под каким ты запускаещь скриепт я непойму
|
Цитата:
|
Krist_ALL Примерный план подключение к джаббер серверу:
1) Создаем сокет (socket_create) 2) Подключаемся к серверу(socket_connect) 3) Посылаем инициализирующий запрос (<?xml version='1.0'?><stream:stream to=' и т.д.) 4) А вот дальше нужен цикл обработки и собственно ответов. Приблизительного вида: PHP код:
З.Ы. Ох и намучаешься ты с DIGEST-MD5 )) Pashkela Не вводите людей в заблуждение, если вы не разбираетесь. XMPP не предусматривает символ перевода строк, чтобы можно было читать NORMAL_READ и для socket_write НЕ требуется указывать длину буфера, если конечно не хочется передавать обрезанные данные |
Gifts, сделал я как ты написал, но чет скрипт зависв браузере - полаеися бесконечный цикл же вайл
PHP код:
|
Krist_ALL Естественно "завис". Клиент принял пакет и в бесконечном цикле ждет, когда придет следующий, а в браузер ничего не выводится из-за буферизации вывода.
Сделай так: PHP код:
|
| Время: 18:17 |